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 }
其实,只要做好“零系数”这个特殊情况的处理,就不会报错了。