首页 > 代码库 > 多项式加法
多项式加法
题目内容:
一个多项式可以表达为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 }
思路:
多项式加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。