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 }

 

posted @ 2018-01-16 16:44  爱你的笑  阅读(112)  评论(0编辑  收藏  举报