Problem1601--【高精度】高精度乘法(例题)

1601: 【高精度】高精度乘法(例题)

Time Limit: 1.000 Sec  Memory Limit: 128 MB
Submit: 346  Solved: 157
[Submit] [Status] [Web Board] [Creator:]

Description

    【例3】高精度乘法。输入两个正整数,求它们的积。

Input

    两行,每行为一个高精度整数,长度不超过255。

Output

    一行,相乘的结果。

Sample Input

1234567890
9876543210

Sample Output

12193263111263526900

HINT

#include<bits/stdc++.h>
usingnamespacestd;
constintN=25600;
inta[N],b[N],c[N];
intla,lb,lc;
intmain(){
    string s1,s2;
    cin>>s1>>s2;
    la=s1.size();
    lb=s2.size();
    lc=la+lb;
    for(inti=0;i<la;i++) a[i]=s1[la-1-i]-'0';
    for(inti=0;i<lb;i++) b[i]=s2[lb-1-i]-'0';
     
    for(inti=0;i<lb;i++){
        for(intj=0;j<la;j++){
            c[i+j]+=a[j]*b[i];
            c[i+j+1]+=c[i+j]/10;
            c[i+j]%=10;
        }
    }
    while(c[lc]==0&&lc>0) lc--;
     
    for(inti=lc;i>=0;i--){
        cout<<c[i];
    }
}

Source/Category


[Submit] [Status]