一些看法和解释都在注释里面,因为第一次刷题目,所以总结先放着。但是这段代码里面还是有重复的部分,可以去进行提取。
//指数:exponents
//系数:coefficients
#include <iostream>
using namespace std;
const int N=1010;
//k表示非0项的数量,Ni表示指数,aNi系数 .
//开一个数组表示 ,X[i]表示X的i次方对应的系数
double a[N],b[N],c[N];//第一个多项式记在a[N]中,第二个多项式记在b[N]中
//结果放在c[N]中
int main(){
int k;
cin>>k;
while(k--){ //读入第一个多项式
//次数和系数交替读入
//n:次数, v:系数
int n;//指明有多少个多项式 ,
//4x2+2x+3
double v;//
//v的x ,n次方
cin>>n>>v;
a[n]=v; //指明某指数项对应的系数
}
cin>>k;//读入非零项的个数
while(k--){
int n;
double v;
cin>>n>>v;
b[n]=v;
}
//求和:i代表的是指数,数组索引的位置代表系数
for(int i=0;i<N;i++) c[i]=a[i]+b[i];
int cnt=0;//统计项式
for(int i=0;i<N;i++)
if(c[i])
cnt++;
cout<<cnt;
//次数高向次数低去进行输出
for(int i=N-1;i>=0;i--){
if(c[i])
printf(" %d %.1f",i,c[i]);
}
return 0;
}