题目描述
求两数的积。
输入输出格式
输入格式:两行,两个数。
输出格式:积
输入输出样例
输入样例#1:
1 2
输出样例#1:
2
说明
每个数字不超过10^2000,需用高精
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
const int N=1e+6;
using namespace std;
char a[N],b[N];
int x[N],y[N],c[N];
int len;
int d=0;
void cheng(char *a,char *b)
{
int lena=strlen(a);
int lenb=strlen(b);
for(int i=0;i<lena;i++)
x[i]=a[lena-i-1]-'0';
for(int i=0;i<lenb;i++)
y[i]=b[lenb-i-1]-'0';
for(int i=0;i<lena;i++)
for(int j=0;j<lenb;j++)
{
c[i+j]+=x[i]*y[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
int len=lena+lenb;
while(len>1&&c[len-1]==0)
len--;//处理前导零
d=len;
}
int main()
{
cin>>a;
cin>>b;
cheng(a,b);
for(int i=d-1;i>=0;i--)
cout<<c[i];
return 0;
}