高精度乘法

18级李灏冬  •  4年前


#include<bits/stdc++.h>

using namespace std;

string a,b;
int ans[2000],a1[1000],a2[1000];
int len,len1,len2;

int main(){
    cin>>a>>b;
    len1=a.size();
    for(int i=0;i<len1;i++){
        a1[i]=a[len1-i-1]-'0';
    }
    len2=b.size();
    for(int i=0;i<len2;i++){
        a2[i]=b[len2-i-1]-'0';
    }
    for(int i=0;i<len1;i++){
        for(int j=0;j<len2;j++){
            ans[i+j]+=a1[i]*a2[j];
        }
    }
    len=len1+len2-1;
    for(int i=0;i<len;i++){
        ans[i+1]+=ans[i]/10;
        ans[i]%=10;
    }
    while(ans[len]){
        ans[len+1]+=ans[len]/10;
        ans[len]%=10;
        len++;
    }
    for(int i=len-1;i>=0;i--){
        cout<<ans[i];
    }
    cout<<endl;
    return 0;
}

评论: