PAT-甲级-1002

1、来,先看题,https://www.patest.cn/contests/pat-a-practise/1002。

2、需要注意的地方只有一个:两个多项式相加之后,系数可能为零,这些项不应该出现在输出中,也不应该算在总的项数内。

  接下来,就是一顿无脑暴力了:

  

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 typedef struct {
 5     int expo;
 6     double coef;
 7 } node;
 8 int ka,kb;
 9 node a[22],b[11];
10 int exist(node n) {
11     for(int i=0; i<ka; i++) if(a[i].expo==n.expo) return i;
12     return -1;
13 }
14 int main(void) {
15     cin>>ka;
16     for(int i=0; i<ka; i++) cin>>a[i].expo>>a[i].coef;
17     cin>>kb;
18     for(int i=0; i<kb; i++) cin>>b[i].expo>>b[i].coef;
19     int len=ka;
20     for(int i=0; i<kb; i++) {
21         if(exist(b[i])!=-1) a[exist(b[i])].coef+=b[i].coef;
22         else {
23             a[len].expo=b[i].expo;
24             a[len++].coef+=b[i].coef;
25         }
26     }
27     for(int i=0; i<len; i++) {
28         for(int j=i+1; j<len; j++) {
29             if(a[j].expo>a[i].expo) {
30                 double c=a[i].coef;
31                 int e=a[i].expo;
32                 a[i].coef=a[j].coef;
33                 a[i].expo=a[j].expo;
34                 a[j].coef=c;
35                 a[j].expo=e;
36             }
37         }
38     }
39     int count=0;
40     for(int i=0; i<len; i++) {
41         if(a[i].coef) count++;
42     }
43     cout<<count;
44     for(int i=0; i<len; i++)
45         if(a[i].coef!=0)
46             printf(" %d %.1lf",a[i].expo,a[i].coef);
47     cout<<endl;
48 }

  其实,只要做好“零系数”这个特殊情况的处理,就不会报错了。

posted @ 2017-11-05 19:08  hesetone  阅读(1256)  评论(0编辑  收藏  举报