zoukankan      html  css  js  c++  java
  • 51nod 1027 大数乘法

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     收藏
     关注
    给出2个大整数A,B,计算A*B的结果。
    Input
    第1行:大数A
    第2行:大数B
    (A,B的长度 <= 1000,A,B >= 0)
    Output
    输出A * B
    Input示例
    123456
    234567
    Output示例
    28958703552

    原来存的大数加减乘除模板用了以后会超时,用数组来个简化版本的,模拟乘法

    #include<cstdio>
    #include<cstring>
    const int maxn = 1010;
    char a[maxn],b[maxn];
    int aa[maxn],bb[maxn],c[2020];
    int main()
    {
        int i,j;
        while(scanf("%s %s",a,b)!=EOF)
        {
            if(a[0]=='0'||b[0]=='0') {printf("0
    ");continue;}
            memset(c,0,sizeof(c));
            int l1=strlen(a),l2=strlen(b);
          //  printf("%s %s
    ",a,b);
            for(i=0;i<l1;i++)
                aa[i]=a[l1-i-1]-'0';
            for(i=0;i<l2;i++)
                bb[i]=b[l2-i-1]-'0';
            for(i=0;i<l1;i++)
            {
                for(j=0;j<l2;j++)
                {    //模拟乘法, c数组保存每一位的值,i+j的值相等时对应的是同一位
                    c[i+j]=aa[i]*bb[j]+c[i+j];
                    c[i+j+1]=c[i+j+1]+c[i+j]/10;
                    c[i+j]=c[i+j]%10;
                }
            }
            i=l1+l2;
            while(!c[i]) i--;
            for(;i>=0;i--)
                printf("%d",c[i]);
            printf("
    ");
        }
        return 0;
    }
    



  • 相关阅读:
    数值数据类型
    如何提高数据迁移和复制的速度
    dns解析
    cdn加速
    集群
    JavaScript初学者应注意的七个细节
    CXF 5参考资料
    深入理解Spring MVC 思想
    【深入理解Java内存模型】
    牛人论
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387282.html
Copyright © 2011-2022 走看看