1002 A+B for Polynomials (25 分)
解题代码:
#include<bits/stdc++.h>
using namespace std;
struct polynomials{
int expn;
double coef;
}poly_1[13],poly_2[13],poly_3[23];
int main(){
int n1,n2;
scanf("%d",&n1);
for(int i=0;i<n1;i++)scanf("%d%lf",&poly_1[i].expn,&poly_1[i].coef);
scanf("%d",&n2);
for(int i=0;i<n2;i++)scanf("%d%lf",&poly_2[i].expn,&poly_2[i].coef);
int i=0,j=0,cnt=0;
while(i<n1&&j<n2){
if(poly_1[i].expn>poly_2[j].expn){
poly_3[cnt].coef=poly_1[i].coef;
poly_3[cnt].expn=poly_1[i].expn;
cnt++;
i++;
}
else if(poly_1[i].expn<poly_2[j].expn){
poly_3[cnt].coef=poly_2[j].coef;
poly_3[cnt].expn=poly_2[j].expn;
cnt++;
j++;
}
else{
poly_3[cnt].coef=poly_1[i].coef+poly_2[j].coef;
if(poly_3[cnt].coef==0){
i++,j++;
continue;
}
poly_3[cnt].expn=poly_1[i].expn;
cnt++;
i++,j++;
}
}
while(i<n1){
poly_3[cnt].coef=poly_1[i].coef;
poly_3[cnt].expn=poly_1[i].expn;
cnt++;
i++;
}
while(j<n2){
poly_3[cnt].coef=poly_2[j].coef;
poly_3[cnt].expn=poly_2[j].expn;
cnt++;
j++;
}
printf("%d",cnt);
for(int p=0;p<cnt;p++){
printf(" %d %.1f",poly_3[p].expn,poly_3[p].coef);
}
return 0;
}
写给自己:正负两个数等于0的时候,就不需要存储在poly_3里面了,这一点非常重要。