加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数乘法

发布时间:2020-12-14 02:35:07 所属栏目:大数据 来源:网络整理
导读:原理上也是采用数组模拟。 ?a[i]?? 12345 ?b[j]??????? 23 ?用c[k]来保存每次的运算结果,k=i+j; ?c[i+j]=c[i+j]+a[i]*b[j]; ?这里来模拟一次乘法过程: ??????????? 123 ?????????*???12 ????? -------------- ?????????????246??? ????????+ 123 ??????????

原理上也是采用数组模拟。

?a[i]?? 12345

?b[j]??????? 23

?用c[k]来保存每次的运算结果,k=i+j;

?c[i+j]=c[i+j]+a[i]*b[j];

?这里来模拟一次乘法过程:

??????????? 123

?????????*???12

????? --------------

?????????????246???

????????+ 123

??????????? 1476

#include<iostream>
#include<string.h>
usingnamespace std;


int main(void)
{
    char s1[510],s2[510],temp[510];
    int a[510],b[510],c[1010];
    while(scanf("%s%s",s1,s2)==2)
    {
        int i,j,h;
        int len1,len2;
        if(strlen(s1)<strlen(s2))
        {
            strcpy(temp,s1);
            strcpy(s1,s2);
            strcpy(s2,temp);
        }
        len1=strlen(s1);
        len2=strlen(s2);
        memset(c,sizeof(c));
        for(i=len1-1,j=0;i>=0;i--,j++)
        {
            a[j]=s1[i]-48;
        }
        for(i=len2-1,j++)
        {
            b[j]=s2[i]-48;
        }
        for(i=0;i<len2;i++)
        {
            for(j=0;j<len1;j++)
            {
                c[i+j]=a[j]*b[i]+c[i+j];
            }
        }
        for(i=0;i<2*len1;i++)
        {
            if(c[i]>=10)
            {
                c[i+1]=c[i+1]+c[i]/10;
                c[i]=c[i]%10;
            }
        }
        i=2*len1;
        while(c[i]==0)
        {
            i--;
        }
        if(i<0)
        {
            printf("0n");
        }
        else
        {
            for(;i>=0;i--)
                printf("%d",c[i]);
            printf("n");
        }    
    }
    return0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读