目录
1.A+B for Polynomials
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int n,m;
double p[1002]={0};
int x;
double y;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %lf",&x,&y);
p[x] = y;
}
scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%d %lf",&x,&y);
p[x]+=y;
}
int ans[21]={0},num=0;
for(int i=0;i<1002;i++){
if(p[i]!=0){
ans[num++] = i;
}
}
printf("%d",num);
for(int i=num-1;i>=0;i--){
int index = ans[i];
printf(" %d %.1lf",index,p[index]);
}
return 0;
}
2.Product of Polynomials
要注意一下两个变量的范围。
第一个是最终多项式的长度,最多为20个,开一个长度为22的数组
第二个是指数的范围,也就是多项式数组的大小,最小也要2000,开个2002的数组
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
double p[2002],ans[2002]={0};
int n;
int x;
double y;
int index[20],num=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %lf",&x,&y);
p[x]=y;
index[num++]=x;
}
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %lf",&x,&y);
for(int j=0;j<num;j++){
int a = index[j];
ans[a+x] += p[a]*y;
}
}
int count=0,index2[20];
for(int i=2001;i>=0;i--){
if(ans[i]!=0){
index2[count++] = i;
}
}
printf("%d",count);
for(int i=0;i<count;i++){
printf(" %d %.1lf",index2[i],ans[index2[i]]);
}
return 0;
}