/*思路:将两个多项式分别存入两个数组,然后将两个数组的对应项相加求和,将系数存入数组,而数组编号代表幂次,最后将得到的数组从高次到低次依次输出,
* 要考虑的特殊情况有:
* 幂次为1;系数为正或负1;只有常数项;首项及中间项如何表达*/
package duoxiangshi;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1[] = new int[101];
int num2[] = new int[101];
int num3[] = new int[101];
int i=0,j=0,k;
int cnt=0;
int isMax=0;
Scanner in = new Scanner(System.in);
if(i<=100&&i>=0&&j<100&&j>=0)
{
do {
i = in.nextInt();
num1[i] = in.nextInt();
}while( i != 0 );
do {
j = in.nextInt();
num2[j] = in.nextInt();
}while( j != 0 );
//多项式求和后存入另一个数组num3[]
for(i=0,k=0,j=0;i<101;i++,j++) {
if(j==i)
{
num3[k]=num1[i]+num2[j];
k++;
}
}
for(k=100;k>0;k--)
{
if(num3[k]!=0)
{
cnt=k; //找到最高幂
break;
}
}
for(k=100;k>0;k--)//从最高幂100到幂为1,从中检索输出。
{
if(num3[k] != 0) //系数不为零是前提
{
if(k == cnt) //输出多项式的最高幂,即首个多项式。
{
if(num3[k]==1)
{
if(k==1)
{
System.out.print("x");//首个项系数为1,幂为1.
}
else
{
System.out.print("x"+k);//首个项系数为1而幂不为1.
}
}
else if(num3[k]==-1)
{
if(k==1)
{
System.out.print("-x");//首项系数为-1,而幂为1.
}
else
{
System.out.print("-x"+k);//首项系数为-1,而幂不为1.
}
}
else if(k==1&&num3[k]!=1&&num3[k]!=-1)//首项幂为1而系数不为1也不为-1的情况。
{
System.out.print(num3[k]+"x");
}
else
{
System.out.print(num3[k]+"x"+k);//首项幂不为1,而系数既不为1也不为-1的情况。
}
}
if(num3[k]<0&&k!=cnt)//非首项,当系数为负的情况。
{
if(num3[k]==-1)
{
if(k==1)
{
System.out.print("-x");//系数为-1,而幂为1的情况。
}
else
{
System.out.print("-x"+k);//系数为-1,而幂不为1的情况。
}
}
else if(k==1&&num3[k]!=-1)
{
System.out.print(num3[k]+"x");//幂为1,而系数不为-1的情况。
}
else
{
System.out.print(num3[k]+"x"+k);//幂不为1,而系数也不为-1的情况。
}
}
else if(num3[k]>0&&k!=cnt)//非首项,当系数为正的情况。
{
if(num3[k]==1)
{
if(k==1)
{
System.out.print("+"+"x");
}
else
{
System.out.print("+"+"x"+k);
}
}
else if(k==1&&num3[k]!=1)
{
System.out.print("+"+num3[k]+"x");
}
else
{
System.out.print("+"+num3[k]+"x"+k);
}
}
}
}
for(k=1;k<num3.length;k++)//检查非零次幂的系数,若存在非零次幂的多项式,另isMax==1.
{
if(num3[k]!=0)
{
isMax=1;
break;
}
}
if (isMax==1){ //前有非零次幂的情况下的零次幂项的输出。
if(num3[0]>0){
System.out.println("+"+num3[0]);
}
else if(num3[0]<0){
System.out.println(num3[0]);
}
else if(num3[0]==0){
System.out.println("");
}
}
else if(isMax==0){
System.out.println(num3[0]); //仅仅有零次幂的情况下的输出
}
}
}
}