您的位置:首页 > 其它

【CODEVS3117】高精度练习之乘法

2016-02-16 10:50 204 查看

Description

给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。

Input

读入两个用空格隔开的正整数

Output

输出A*B的值

Sample Input

3 12

Sample Output

36

Hint

两个正整数的位数不超过500位

#include<iostream>
#include<cstring>
using namespace std;
char A[510],B[510];
int a[510],b[510],c[1020];
int main()
{
cin>>A>>B;
int aLen=strlen(A), bLen=strlen(B);
for (int i=1;i<=aLen;i++) a[i]=A[aLen-i]-'0';
for (int i=1;i<=bLen;i++) b[i]=B[bLen-i]-'0';
int x;
for (int i=1;i<=aLen;i++)
{
x=0;//处理进位
for (int j=1;j<=bLen;j++)
{
c[i+j-1]=c[i+j-1]+x+a[i]*b[j];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[bLen+i]=x;
}
int cLen=aLen+bLen;
while (!c[cLen] && cLen>1) cLen--;
for (int i=cLen;i>=1;i--) cout<<c[i];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: