1027 大数乘法 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1027&judgeId=578013
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456 234567
Output示例
28958703552
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<vector>
#define ll long long
const int maxn=1005;
using namespace std;
char a[maxn];
char b[maxn];
int x[maxn];
int y[maxn];
int z[maxn*2];
int main()
{
int i,j;
cin>>a;
cin>>b;
int len1=strlen(a);
int len2=strlen(b);
for( j=0,i=len1-1;i>=0;i--)
{
x[j++]=a[i]-'0';
}
for( j=0,i=len2-1;i>=0;i--)
{
y[j++]=b[i]-'0';
}
for( i=0;i<len1;i++)
{
for( j=0;j<len2;j++)
{
z[i+j]=x[i]*y[j]+z[i+j];
}
}
for( i=0;i<maxn*2;i++)
{
if(z[i]>=10)
{
z[i+1]=z[i+1]+z[i]/10;
z[i]%=10;
}
}
for( i=2*maxn;i>=0;i--)
{
if(z[i]==0)
continue;
else
break;
}
for(;i>=0;i--)
cout<<z[i];
cout<<endl;
return 0;
}