#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; char a[],b[],temp[];
int A[],B[],c[];
int na,nb;
int tag;
int cut,g; int main()
{
while(cin>>a>>b)
{
cut=; na=strlen(a);
nb=strlen(b);
for(int i=;i<na;i++){
A[i]=a[i]-'';
}
for(int i=;i<nb;i++){
B[i]=b[i]-'';
}
for(int i=na-;i>=;i--)
{
cut=na-i-;
for(int j=nb-;j>=;j--)
{
c[cut]=c[cut]+A[i]*B[j];
cut++;
}
}
tag=;
for(int i=;i<cut;i++)
{
if(c[i]>=)
{
if(c[cut-]>=)
{
cut++;
}
c[i+]+=c[i]/;
c[i]=c[i]%;
}
}
for(cut=;cut>;cut--){
if(c[cut]!=)
break;
}
for(;cut>=;cut--)
{
cout<<c[cut];
}
cout<<endl;
memset(A,,sizeof(a));
memset(B,,sizeof(b));
memset(c,,sizeof(c));
}
return ;
}
纸上得来终觉浅,绝知此事要躬行。
问题 J: 【高精度】高精度乘法
问题 J: 【高精度】高精度乘法
时间限制: 1 Sec 内存限制: 64 MB 提交: 32 解决: 16 [提交][状态][讨论版]
题目描述
牢门上的第三道锁,需要使用高精度乘法来破译出相应密码,当然,必须使用“万进制算法”计算两个非负整数A、B的积,其中A和B的位数在10000位以内。
输入
共两行数据,第一行为一个非负整数A,第二行为一个非负整数B,A、B的位数均在10000以内。
输出
输出一个数,即A和B的乘积。
样例输入
2
3
样例输出
6