【高精度】高精度乘法
时间限制: 1 Sec 内存限制: 64 MB题目描述
牢门上的第三道锁,需要使用高精度乘法来破译出相应密码,当然,必须使用“万进制算法”计算两个非负整数A、B的积,其中A和B的位数在10000位以内。
输入
共两行数据,第一行为一个非负整数A,第二行为一个非负整数B,A、B的位数均在10000以内。
输出
输出一个数,即A和B的乘积。
样例输入
2
3
样例输出
6
#include<bits/stdc++.h> using namespace std; char s1[10005],s2[10005]; int a[10005],b[10005],c[20010]; int main() { scanf("%s %s",&s1,&s2); int la,lb,len,i,j; la=strlen(s1); lb=strlen(s2); for(i=1;i<=la;i++) a[i]=s1[la-i]-48; for(i=1;i<=lb;i++) b[i]=s2[lb-i]-48; for(i=1;i<=la;i++) { for(j=1;j<=lb;j++) { c[i+j-1]+=a[i]*b[j]; c[i+j]+=c[i+j-1]/10; c[i+j-1]%=10; } } len=la+lb; while(c[len]==0&&len>1) len--; for(i=len;i>=1;i--) { printf("%d",c[i]); } printf("\n"); return 0; }