转载

多项式加法

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

多项式加法

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

程序要处理的幂最大为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

来源:网易云课堂——C程序设计(翁恺)第六章第一题

 1 #include<stdio.h>  2 #define true 1  3 #define false 0   4 int main()  5 {  6     int polynomial[101] = {0};  7     int i, temp;  8     int max = 0;  9     int flag = 0;  /*结束输入标志位,表示已经 10                    输入的多项式个数*/  11      12     while(flag != 2) { 13         scanf("%d %d", &i, &temp); 14         polynomial[i] += temp; //更新多项式系数  15          16         if (i > max)  //找出最大幂次数  17             max = i; 18                  19         if (i == 0)  //限定输入2个多项式  20             flag++;     21     } 22      23     int signForInteger = true; 24     int signForZero = true; 25     for (i = max; i >= 0; i--) { 26         if (polynomial[i] != 0) { 27             signForZero = false;    28              29             if (polynomial[i] < 0) 30                 signForInteger = true;  //负数的系数前略去加号  31                  32             if (signForInteger == true)   33                 signForInteger = false;  //最高次项略去加号  34             else  35                 printf("+" ); //非最高次项默认加号  36                  37             if (i != 0 && polynomial[i] != 1)  //省略系数1  38                 printf("%d", polynomial[i]); 39                      40             if (i == 0)  //常数项  41                 printf("%d/n",polynomial[i]); 42             else if (i == 1)  //i = 1 省略幂次数1 43                 printf("x"); 44             else 45                 printf("x%d", i);     46         } 47         else {     48             if (i == 0) { 49                 if (signForZero == false) 50                     printf("+");  //多项式末项为零 51                      52                 printf("%d/n", polynomial[i]);  //多项式为零  53             } 54                  55         } 56     }     57     return 0; 58 }

思路: 多项式加法

正文到此结束
Loading...