1002 A+B for Polynomials (25)
题目网址:https://www.patest.cn/contests/pat-a-practise/1002
1 #include<stdio.h> 2 int main() 3 { 4 int k,n,k1,k2,nk1[20],nk2; 5 float a1[20],a2; 6 scanf("%d",&k1); 7 k=k1,n=k1; 8 for(int i=0;i<k1;i++)scanf("%d %f",&nk1[i],&a1[i]); 9 scanf("%d",&k2); 10 for(int i=0;i<k2;i++) 11 { 12 scanf("%d %f",&nk2,&a2); //输入数值的话,scanf会跳过空格和转行 13 int j; 14 for(j=0;j<k1;j++) 15 { 16 if(nk2==nk1[j]) //系数相同 17 { 18 a1[j]+=a2; 19 if(a1[j]==0) 20 { 21 nk1[j]=-1; 22 n--; //个数减一 23 } 24 break; 25 } 26 } 27 if(j==k1) //新系数 28 { 29 nk1[k]=nk2; 30 a1[k]=a2; 31 k++; //新长度, 32 n++; //个数加一 33 } 34 } 35 if(n) 36 { 37 printf("%d ",n); 38 for(int i=0;i<k;i++) 39 { 40 if(nk1[i]!=-1) 41 { 42 for(int j=i+1;j<k;j++) //排序 43 { 44 if(nk1[i]<nk1[j]) 45 { 46 int x; 47 float y; 48 x=nk1[i],nk1[i]=nk1[j],nk1[j]=x; 49 y=a1[i],a1[i]=a1[j],a1[j]=y; 50 } 51 } 52 printf("%d %.1f",nk1[i],a1[i]); //最大的那个输出。 53 n--; 54 if(n)printf(" "); //不是最后一个输出空格 55 else break; 56 } 57 } 58 } 59 else printf("0"); //格式 60 return 0; 61 }