PTA甲级1009 简单模拟
题目
大意:给出两个多项式,求他们的乘积,并输出不为0的项数和各项的幂和底数。
思路:先获得第一个多项式的系数,再获得第二个多项式的系数时循环与第一个多项式的系数相乘,并
将结果加到对应的系数上,并输出非零项。
代码:
#include<cstdio>
struct poly{
int exp;//指数
double cof;//系数
}poly[1001];//第一个多项式
double ans[2001];//存放结果
int main(){
int n,m, number;
scanf("%d",&n);//第一个多项式非零数量
for(int i=0;i<n;i++){
scanf("%d %lf",&poly[i].exp,&poly[i].cof);//写入第一个多项式
}
scanf("%d",&m);//第二个多项式非零数量
for(int i=0;i<m;i++){
int exp;
double cof;
scanf("%d %lf",&exp,&cof);//写入第二个多项式
for(int j=0;j<n;j++){//与第一个多项式逐一相乘
ans[exp+poly[j].exp]+=(cof*poly[j].cof);
}
}
for(int i=0;i<=2000;i++){
if(ans[i]!=0.0) number++;//计算有几个非0数
}
printf("%d",number);
for(int i=2000;i>=0;i--){//输出
if(ans[i]!=0.0){
printf(" %d %.1f",i,ans[i]);//注意%.1f只输出到一位小数,否则会报错
}
}
return 0;
}