码迷,mamicode.com
首页 > 其他好文 > 详细

多项式加法

时间:2015-01-14 22:45:14      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

题目内容:

一个多项式可以表达为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 }

思路:技术分享

多项式加法

标签:

原文地址:http://www.cnblogs.com/tonony1/p/4224874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!