1009 Product of Polynomials踩坑记录

博客记录了1009 Product of Polynomials问题的解决过程,初次提交时因使用%f接收高精度数据导致错误。解决方案是将%f替换为%lf。题目中虽数值不超过1000,但指数相加后需考虑更大容量的哈希数组。使用哈希数组的方法简化问题,但指数增长会增加时间复杂度。
摘要由CSDN通过智能技术生成

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就行了

这个题目使用哈希数组记录,会方便很多,但是一旦指数高了之后时间也会增加很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值