pat1002. A+B for Polynomials (25)

1002. A+B for Polynomials (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

This time, you are supposed to find A+B where A and B are two polynomials.

Input

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 ... NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.

 

Output

For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.

Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2

提交代码

 

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<stack>
 5 #include<algorithm>
 6 #include<iostream>
 7 #include<stack>
 8 #include<set>
 9 #include<map>
10 #include<vector>
11 #include<queue>
12 using namespace std;
13 double co[1005];
14 #define inf 1e-8
15 int main()
16 {
17     //freopen("D:\\INPUT.txt","r",stdin);
18     int i,k,ex;
19     double num;
20     int sumcount=0;
21     scanf("%d",&k);
22     while(k--){
23         scanf("%d %lf",&ex,&num);
24         co[ex]=num;
25     }
26     scanf("%d",&k);
27     while(k--){
28         scanf("%d %lf",&ex,&num);
29         co[ex]+=num;
30     }
31     for(i=1000;i>=0;i--){
32         if(fabs(co[i])<inf){
33             continue;
34         }
35         sumcount++;
36     }
37     printf("%d",sumcount);
38     for(i=1000;i>=0;i--){
39         if(fabs(co[i])<inf){
40             continue;
41         }
42         printf(" %d %.1lf",i,co[i]);
43     }
44     printf("\n");
45     return 0;
46 }

 

posted @ 2015-09-06 17:20  Deribs4  阅读(169)  评论(0编辑  收藏  举报