高精度乘法

LZU_er發表於2020-09-23

題目連結:A*B problem

#include <iostream>
#include <algorithm>
#define N 5000
using namespace std;
int a[N],b[N],c[N];
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    int len1=s1.length(),len2=s2.length();
    for(int i=1;i<=len1;i++)
        a[i]=s1[len1-i]-'0';
    for(int i=1;i<=len2;i++)
        b[i]=s2[len2-i]-'0';
    for(int i=1;i<=len1;i++)
        for(int j=1;j<=len2;j++)
    {
        c[i+j-1]+=a[i]*b[j];
        c[i+j]+=c[i+j-1]/10;
        c[i+j-1]%=10;
    }
    int len;
    if(c[len1+len2]==0)len=len1+len2-1;
    else len=len1+len2;
    bool f=true;
    for(int i=len;i>=1;i--){
        if(c[i]==0&&f)continue;
        else{
            f=false;
            cout<<c[i];
        }
    }
    if(f)cout<<0;
    return 0;
}