UVA126 The Errant Physicist
题目描述
著名物理学家阿尔弗雷德·E·纽曼正在研究涉及多项式乘法的问题。例如,他可能需要计算
$$
(-x^8y+9x^3-1+y) \cdot (x^5y+1+x^3)
$$
得到答案
$$
-x^{13}y^2-x^{11}y+8x^8y+9x^6-x^5y+x^5y^2+8x^3+x^3y-1+y
$$
不幸的是,这些问题太微不足道了,以至于这位伟人的思绪总是游离在工作之外,他得到了错误的答案。因此,他设计的几枚核弹头过早引爆,摧毁了五个主要城市和几片雨林。
你要写一个程序来执行这样的乘法并拯救世界。
输入格式
输入数据文件有若干个测试数据,每个测试数据有两行,每行包含的字符不超过 $80$ 个。输入文件的最后一行包含一个`#`作为其第一个字符。
每行输入都包含一个多项式,该多项式没有空格,也没有任何显式的求幂运算符。指数是正的非零无符号整数。系数也是整数,但也可以是负数。指数和系数的大小都小于或等于 $100$。每个项最多包含一个 $x$ 因子和一个 $y$ 因子。
输出格式
您的程序必须将输入中的每对多项式相乘,并在一对上打印每个乘积行,第一行包含所有指数,相对于其余行适当定位信息,在下面的行中。
1. 输出行中的项必须按 $x$ 的幂次降序排列,对于给定的幂次按照 $y$ 的幂次升序排序。
2. 可以被化简的单项式必须化简。例如,$40x^2y^3-38x^2y^3$ 被替换为 $2x^2y^3$。
3. 不得显示系数为零的单项式。
4. 除常数项为 $1$ 的情况外,系数 $1$ 被省略。
5. 省略指数 $1$。
6. 省略 $x^0$ 和 $y^0$ 的因子。
7. 二进制正负(即输出中连接项的正负)前后都有一个空格。
8. 如果第一项的系数为负,则在第一列中以一元减号开头,中间没有空格。否则,系数本身从第一个输出开始列。
9. 可以假设输出长度最多为 $80$ 个字符。
10. 每对输出行之间不应有空白行。
11. 一对行的长度应该相同——为了实现这一点,尾随空格应该出现在较短行的最后一个非空白字符之后。