本题主要考察利用数组实现多项式的加减
下标 0 可以表示个位,0 位置的值可以表示个位数值,下标 1 可以表示十位数字,下标 1 的数组值可以表示十位数的系数值,以此类推就能用一个系数数组表示一个多项式。
#include <iostream>
using namespace std;
int main()
{
//系数数组为浮点数,其下标正好作为其幂次
double xishu[1001]={0};
int k;
cin>>k;
while(k--){
int n;//n次项
double b;//具体系数
cin>>n>>b;
xishu[n]+=b;
}
cin>>k;
while(k--){
int n;//n次项
double b;//具体系数
cin>>n>>b;
xishu[n]+=b;
}
int sum=0;
//输出非零项个数
for(int i=0;i<=1000;i++){
if(xishu[i]!=0)sum++;
}
cout<<sum;
//从高次到低次的输出幂次和系数
for(int i=1000;i>=0;i--){
if(xishu[i]!=0)printf(" %d %.1f",i,xishu[i]);
//注意这里要求输出的精度为0.1
}
return 0;
}
本来这里想要用一个set存放非零项的个数,这样set.size()就可以取代上述求解sum的循环。但是不知道为什么会产生部分错误,有知道原因的大佬不妨说一下哈哈哈,感激不尽!