PAT 1002. 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

思路:

简单题目。注意格式。如果某一项系数为0,不输出。最后一种情况,没有存在项,输出"0 "

源代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 int main() {
 6     int na,nb;
 7     scanf("%d",&na);
 8     int flag[1001]={0};
 9     double res[1001]={0};
10     int index;double data;
11     for(int i=0;i<na;++i) {
12         scanf("%d %lf",&index,&data);
13         flag[index]=1;
14         res[index]+=data;
15     }
16     scanf("%d",&nb);
17     for(int i=0;i<nb;++i) {
18         scanf("%d %lf",&index,&data);
19         flag[index]=1;
20         res[index]+=data;
21     }
22     int cnt=0;
23     for(int i=0;i<=1000;++i) {
24         if(flag[i]&&fabs(res[i])>1e-6)
25             cnt++;
26     }
27     if(cnt==0) {
28         printf("0");
29     } else {
30         printf("%d ",cnt);
31     }
32     for(int i=1000;i>=0;--i) {
33         if(flag[i]&&fabs(res[i])>1e-6) {
34             printf("%d %.1lf",i,res[i]);
35             cnt--;
36             if(cnt==0) {
37                 break;
38             } else {
39                 printf(" ");
40             }
41         }
42     }
43     printf("
");
44     return 0;
45 }
View Code
原文地址:https://www.cnblogs.com/lemonbiscuit/p/7775968.html