5个re

P1303 A*B Problem

Little_Andyyu @ 2022-08-05 13:57:11


#include<bits/stdc++.h>
using namespace std;
int main()
{
    char d[2001],e[2001];
    int a[2001],b[2001],c[2001],la,lb,lc,x;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
            cin>>d;
            cin>>e;
            la=strlen(d);
            lb=strlen(e);
            for(int i=0;i<=la-1;i++){
                a[la-i]=d[i]-48;
            }
            for(int i=0;i<=lb-1;i++){
                            b[lb-i]=e[i]-48;
                        }
                        for(int i=1;i<=la;i++){
                            x=0;
                            for(int j=1;j<=lb;i++){
                                c[i+j-1]+=a[i]*b[j]+x;
                                x=c[i+j-1]/10;
                                c[i+j-1]%=10;
                            }
                            c[i+lb]=x;
                        }
                        lc=la+lb;
    while(lc>1&&c[lc]==0){
        lc--;
    }for(int i=lc;i>=1;i--){
        cout<<c[i];
    }                   
    return 0;
}

by ajahjahah @ 2022-08-05 14:03:38

众所周知,10^{2000}\times10^{2000}=10^{4000},可以用2000位存起来


by 你的洛 @ 2022-08-05 14:04:30

两个2000位数相乘,答案的长度当然超过2000位


|