1009 Product of Polynomials踩坑记录
第一次提交 因为在接收时有高精度数据导致使用%f接收数据出错,导致输出出错
注意:虽然题目说所有数据不会超过1000,虽然1000*1000仍然在int的范围内,但是指数相加之后就会达到2000所以哈希数组设置的时候需要给稍大于2000的数组容量。
先附上代码
#include<stdio.h>
int main()
{
int N1,N2;double a[1020]={0.0};
double b[1020]={0.0};
double c[2020]={0.0};
scanf("%d",&N1);
for(int i=0;i<N1;i++){
int A;double B;
scanf("%d",&A);
scanf("%f",&B);
a[A]=B;
}
scanf("%d",&N2);
for(int i=0;i<N2;i++){
int A;double B;
scanf("%d",&A);
scanf("%f",&B);
b[A]=B;
}
for(int i=0;i<=1000;i++){
for(int j=0;j<=1000;j++){
c[i+j]+=a[i]*b[j];
}
}
int count=0;
for(int i=0;i<=2000;i++){
if(c[i]!=0.0)count++;
}
printf("%d",count);
for(int i=2000;i>=0;i--){
if(c[i]!=0)printf(" %d %.1lf",i,c[i]);
}
return 0;
}
解决方法:将%f换成%lf就行了
这个题目使用哈希数组记录,会方便很多,但是一旦指数高了之后时间也会增加很多。