九度oj 题目1472:求两个多项式的和

题目描述:

输入两个多项式,计算它们的和。
每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数。
如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一个3表示该多项式由三个整数对表示。

输入:

输入为两行,分别表示两个多项式。表示每项的整数对按照次数大小降序给出。(次数绝对值小于1000,系数绝对值小于10000)

输出:

按照降次顺序输出表示和多项式的整数对(系数为0的整数对不用输出,整数对由空格分隔,最后一个整数对后不添加空格)

样例输入:
3 3 5 -2 1 4 0
4 2 3 -1 2 1 1 3 0
样例输出:
3 5 2 3 -1 2 -1 1 7 0
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <string>
 5 #include <cmath>
 6 #include <algorithm>
 7 
 8 #define MAX 2009
 9 
10 int xi[MAX];
11 
12 int main(int argc, char const *argv[])
13 {
14     int n;
15     //freopen("input.txt","r",stdin);
16     while(scanf("%d",&n) != EOF) {
17         memset(xi,0,sizeof(xi));
18         for(int i = 0; i < n; i++) {
19             int xiTemp;
20             int ciTemp;
21             scanf("%d %d",&xiTemp,&ciTemp);
22             if(ciTemp < 0) {
23                 ciTemp = ciTemp + 2001;
24             }
25             xi[ciTemp] = xiTemp;
26         }
27         scanf("%d",&n);
28         for(int i = 0; i < n; i++) {
29             int xiTemp;
30             int ciTemp;
31             scanf("%d %d",&xiTemp,&ciTemp);
32             if(ciTemp < 0) {
33                 ciTemp = ciTemp + 2001;
34             }
35             xi[ciTemp] = xi[ciTemp] + xiTemp;
36         }
37         bool isOne = true;
38         
39        
40         for(int i = 1000; i >= 0; i--) {
41             if(xi[i] != 0) {
42                 if(isOne) {
43                     printf("%d %d",xi[i],i);
44                     isOne = false;
45                 }
46                 else {
47                     printf(" %d %d",xi[i],i);
48                 }
49                 
50             }
51         }
52         
53          for(int i = MAX-1; i >= 1001; i--) {
54             if(xi[i] != 0) {
55                 if(isOne) {
56                     printf("%d %d",xi[i],i-2001);
57                     isOne = false;
58                 }
59                 else {
60                     printf(" %d %d",xi[i],i-2001);
61                 }
62                 
63             }
64         }
65         
66         printf("\n");
67     }
68 
69     return 0;
70 }

 主要注意是绝对值小于1000

posted @ 2016-07-21 15:42  Jason杰  阅读(319)  评论(0编辑  收藏  举报