题目:a和b是多项式,计算a+b的值
例子解析:
a = 2.4x^1 + 3.2x^0 b = 1.5x^2 + 0.5x^1
a + b = 1.5x^2 + 2.9x^1 + 3.2x^0
算法思路:a和b存放在数组中,a[0]表示x^0的系数,暴力遍历加和,然后判断系数(a[i])非零后格式化输出。
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a[1010],b[1010];//按上述所示存储a和b
memset(a,0,sizeof(a));memset(b,0,sizeof(b));//初始化
double sum[1010];//存储结果
memset(sum,0,sizeof(sum));//初始化
int k,N;
double c;
//输入a
cin>>k;
int Max_a;//记录a多项式的最大的幂次
for(int j=0;j<k;j++){
cin>>N>>c;
if(j==0)Max_a = N;
a[N]=c;
}
//输入b
cin>>k;
int Max_b;//记录b多项式的最大的幂次
for(int j=0;j<k;j++){
cin>>N>>c;
if(j==0)Max_b = N;
b[N]=c;
}
//计算a+b
int count = 0;
int Max=Max_b;if(Max_a>Max_b)Max=Max_a;
for(int i=0;i<=Max;i++){
sum[i]=a[i]+b[i];
if(sum[i]!=0)count++;
}
//输出
cout<<count;
for(int i=Max;i>=0;i--){
if(sum[i]!=0){
// cout<<' '<<i<<' '<<sum[i];//看题!!要格式化输出
printf(" %d %.1f",i,sum[i]);
}
}
cout<<endl;
}