ADV-353 高精度乘法

ADV-353 高精度乘法

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LENGTH 1000
int main(){
    
    
    char a1[LENGTH],b1[LENGTH];
    int a[LENGTH],b[LENGTH],c[LENGTH];
    int lena,lenb,lenc,i,j,x;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    scanf("%s", a1);
    scanf("%s", b1);
    lena = int(strlen(a1));
    lenb = int(strlen(b1));
     for (i = 0;i < lena;i++){
    
    
         a[lena - i - 1] = a1[i] - 48;
    }
    for (i = 0;i < lenb; i++){
    
    
        b[lenb - i - 1] = b1[i] - 48;
    }
 
    for (i = 0; i < lena; i++){
    
    
        x = 0;
        for (j = 0; j < lenb; j++){
    
    
            c[i + j] = a[i] * b[j] + x + c[i + j];
            x = c[i + j] / 10;
            c[i + j] %= 10;
        }
        c[lenb + i] = x;
    }
    lenc = lena + lenb;
    while (c[lenc] == 0 && lenc > 0){
    
    
        lenc--;
    }
    for (i = lenc; i >= 0; i--){
    
    
        cout<<c[i];
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43359312/article/details/105612726
今日推荐