pat甲级 1002 A+B for Polynomials
首先是生僻词汇:polynomials 多项式 exponents 指数 respectively 分别
这道题的大致意思是每次测试一组测试用例,一组测试用例有两个一个是一行,每一行包含一个多项式的信息:
K N1 aN1 N2 aN2…NK aNK
K是多项式的非零项的数量,aNi和Ni(i = 1 2⋯,K)分别是指数和系数。1<=k<=10,0<=Nk<=1000。
这道题最大的坑就是这道题只给出了Ni的取值范围,没有给出aNi的取值范围,所以需要过滤掉相加后aNi为0的这种情况。另外题目给出的就是标准多项式,在读取第一个数的时候根本不需要考虑多个Ni的值相同的情况,我多写了,不过也是对的。
下面是ac代码:
#include<iostream> #include<cstdio> #include<map> using namespace std; int main(){ map<int,double> mapp; int a; cin>>a; double x,y; int flag=0; for(int i=0;i<a;i++){ cin>>x>>y; if(!mapp[x]){ flag++; mapp[x]=y; } else { mapp[x]+=y; if(mapp[x]==0){ flag--; } } } int b; cin>>b; for(int i=0;i<b;i++){ cin>>x>>y; if(!mapp[x]){ flag++; mapp[x]=y; } else { mapp[x]+=y; if(mapp[x]==0){ flag--; } } } cout<<flag; for(int i=1000;i>=0;i--){ if(mapp[i]!=0){ printf(" %d %.1lf",i,mapp[i]); } } }