多项式加法

题目链接:多项式加法

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

输出格式:

从最高幂开始依次降到0幂,如:2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

输入样例:

6 2

5 3

3 12

1 6

0 20

6 2

5 3

2 12

1 6

0 20

输出样例:

4x6+6x5+12x3+12x2+12x+40

时间限制:500ms内存限制:32000kb
解题思路:字符串处理,基础题,详解看注解。
 1 import java.util.Scanner;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner scan = new Scanner(System.in);
 5         int[] Pow = new int[101];//Pow数组记录系数,下标是幂指数
 6         int index,val,MaxIndex=-1;//先标记为-1,表示找不到
 7         for(int i=1;i<=2;++i) {//遍历两次,输出两个多项式
 8             while(true) {
 9                 index=scan.nextInt();
10                 val = scan.nextInt();
11                 Pow[index] += val;
12                 if(index==0)break;//当输入幂指数是0,表示完成一个多项式的输入,跳出
13             }
14         }
15         for(int i=100;i>=0;--i){//找到第一个非0系数的幂指数
16             if(Pow[i]!=0){
17                 MaxIndex=i;//将第一个非0系数的幂指数给MaxIndex后跳出
18                 break;
19             }
20         }
21         if(MaxIndex==-1){//表示整个多项式为0,直接输出0即可
22             System.out.println(0);
23         }
24         else if(MaxIndex==0){//如果0次幂系数不为0,说明非0次幂的系数都为0,直接输出0次幂的系数
25             System.out.println(Pow[MaxIndex]);
26         }
27         else{//先输出第一个非0次幂系数的项
28             if(Pow[MaxIndex]>1||Pow[MaxIndex]<-1)System.out.print(Pow[MaxIndex]+"x");//如果系数不是1或-1且不是0,直接输出第一项的系数和x
29             else if(Pow[MaxIndex]==1)System.out.print("x");//如果系数是1,输出x
30             else if(Pow[MaxIndex]==-1)System.out.print("-x");//如果系数是-1,输出-x
31             if(MaxIndex!=1)System.out.print(MaxIndex);//如果此时的幂指数不是1,接着就可以输出幂指数
32             for(int i=MaxIndex-1;i>0;--i){//处理除首尾外中间的部分,因为已经有第一项了,所以接下来遇到系数是正数,前面可以直接输出'+'
33                 if(Pow[i]>1)System.out.print("+"+Pow[i]+"x");//当系数大于1时
34                 else if(Pow[i]==1)System.out.print("+x");//当系数是1时,直接输出+x
35                 else if(Pow[i]==-1)System.out.print("-x");//当系数是-1时,直接输出-x
36                 else if(Pow[i]<-1)System.out.print(Pow[i]+"x");//当系数小于-1时
37                 else continue;//这句话其实是多余的,为了呼应美hhh~,即系数为0时,直接跳过
38                 if(Pow[i]!=0 && i>1)System.out.print(i);    //如果系数不为0且幂指数不为1,才可以输出这个幂指数    
39             }//最后处理尾巴即0次幂,这时候就不用管系数是不是1或-1,因为最后一项是不含x的,所以只需按照剩下的规则格式输出即可
40             if(Pow[0]>0)System.out.print("+"+Pow[0]);
41             if(Pow[0]<0)System.out.print(Pow[0]);
42         }
43         scan.close();
44     }
45 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9019814.html