pat甲级1002 A+B for Polynomials
题意:输入为两行,每一行代表一个多项式,第一个数字表示多项式有几项,后面每两个数字分别代表一项中的指数和系数。要求两个多项式相加的和。
分析:用一个double型数组模拟即可,需要注意的是如果系数为0,则对应项不输出,另外输出结果保留一位小数。
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 double p[1001]; 8 int main() 9 { 10 ios::sync_with_stdio(false); 11 cin.tie(0); 12 cout.tie(0); 13 int k1,k2; 14 while(cin>>k1) 15 { 16 memset(p,0,sizeof(p)); 17 for(int i=0;i ) 18 { 19 int zs;double xs; 20 cin>>zs>>xs; 21 p[zs]+=xs; 22 } 23 cin>>k2; 24 for(int i=0;i ) 25 { 26 int zs;double xs; 27 cin>>zs>>xs; 28 p[zs]+=xs; 29 } 30 int sum=0;//记录多项式相加后还有多少存在的项 31 for(int i=0;i<=1000;i++) 32 { 33 if(p[i]!=0.0) 34 { 35 sum++; 36 } 37 } 38 cout<<sum; 39 for(int i=1000;i>=0;i--) 40 { 41 if(p[i]!=0.0) 42 { 43 cout<<" "<" "<<fixed< 1)<<p[i];//printf("%0.1f", p[i]);一样,个人输出习惯而已 44 } 45 } 46 cout<<endl; 47 } 48 return 0; 49 }