首页 > 代码库 > 多项式加法

多项式加法

题目内容:

一个多项式可以表达为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 省略幂次数143                 printf("x");44             else45                 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 }

思路:技术分享

多项式加法