1002 A+B for Polynomials (25 分)
题目大意
计算多项式A+B的和。
基本思路
设立c数组,长度为指数的最大值,c[i] = j表示指数i的系数为j,接收a和b输入的同时将对应指数的系数加入到c中,累计c中所有非零系数的个数,然后从前往后输出所有系数不为0的指数和系数。
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
float c[1001]={0};//下标为指数,值为系数
int m,n;
//读入第一个多项式
cin>>m;
for (int i = 0; i < m; ++i) {
int t;
float num;
cin>>t>>num;
c[t]+=num;
}
//读入第二个多项式
cin>>n;
for (int i = 0; i < n; ++i) {
int t;
float num;
cin>>t>>num;
c[t]+=num;
}
//统计系数不为0的项数
int cnt=0;
for (int i = 0; i <1001 ; ++i) {
if(c[i]!=0){
cnt++;
}
}
//输出
cout<<cnt;
for (int i = 1000; i >=0 ; --i) {
if(c[i]!=0.0){
printf(" %d %.1f",i,c[i]);
}
}
}