题目分析:多项式相加。
又犯了先前相同的错误,数组开的最大为1100,那么下面遍历的时候,起始最大只能是1009,否则就会造成想不到的错误。
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
typedef long long ll;
double aa[1100],bb[1100],cc[1100];
int k1,k2;
int main(){
int x;double y;cin>>k1;for(int i=0;i<k1;i++){
cin>>x>>y;aa[x]=y;}cin>>k2;for(int i=0;i<k2;i++){
cin>>x>>y;bb[x]=y;}int ans=0;for(int i=0;i<1100;i++){
if(bb[i]!=0&&aa[i]!=0){
cc[i]=bb[i]+aa[i];if(cc[i]!=0){
ans++;}continue;}if(bb[i]!=0){
cc[i]=bb[i];ans++;continue;}if(aa[i]!=0){
cc[i]=aa[i];ans++;continue;}}cout<<ans;for(int i=1009;i>=0;i--){
if(cc[i]!=0){
//printf(" %d %.1f",i,cc[i]);cout << " " << i << " ";cout << setiosflags(ios::fixed);cout << setprecision(1) << cc[i];}}cout<<endl;return 0;
}