1002 A+B for Polynomials
题目大意
将两个多项式相加,多项式的项数和具体的值都已经给出,要做的就是对应起来相加。
算法思想
- 设置三个float型数组,两个用来分别保存输入的多项式,另一个用于保存加后的结果
- 一层循环后就可以把对应的项相加
- 注意保留一位小数,好比是15.0这种也需要
- 这道题最难的应该是输入吧
代码
#include<iostream>
#include<string>
#include <iomanip>
using namespace std;
int main()
{
int n,m,k,sum=0;
float a[1001],b[1001],c[1001];
for(int i=0;i<=1000;i++)//初始化为0
{
a[i]=0;
b[i]=0;
c[i]=0;
}
cin>>n;//散开输入
for(int i=0;i<n;i++)
{
cin>>k;
cin>>a[k];
}
cin>>m;
for(int i=0;i<m;i++)
{
cin>>k;
cin>>b[k];
}
for(int i=0;i<=1000;i++)//相加然后统计不为0的项数
{
c[i]=a[i]+b[i];
if(c[i]!=0)
sum++;
}
cout<<setiosflags(ios::fixed)<<setprecision(1);//保留一位小数
cout<<sum;
for(int i=1000;i>=0;i--)//从后往前,寻找非零多项式
{
if(c[i]!=0)
{
cout<<" "<<i<<" "<<c[i];//注意输出格式
}
}
return 0;
}