题目链接:点击打开链接
题目:
给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456 234567
Output示例
2895870355
思路:
大概就是这样吧... ...
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[3000],b[3000],c[3000];
int main()
{
// freopen("in.txt","r",stdin);
char s1[1005],s2[1005];
int len1,len2;
while(scanf("%s%s",s1,s2)!=EOF)
{
getchar();
len1=strlen(s1);
len2=strlen(s2);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int xx=0;
for(int i=len1-1; i>=0; i--)
{
a[xx]=s1[i]-'0';
xx++;
}
xx=0;
for(int i=len2-1; i>=0; i--)
{
b[xx]=s2[i]-'0';
xx++;
}
int k;
int bit=0;
for(int i=0; i<len2; i++)
{
k=i;
for(int j=0; j<len1; j++)
{
c[k]+=a[j]*b[i];
k++;
}
bit=max(k,bit);
}
for(int i=0; i<bit; i++)
{
if(c[i]>=10)
{
c[i+1]+=(c[i]/10);
c[i]%=10;
if(i==(bit-1))bit++;
}
}
for(int i=bit-1; i>=0; i--)
printf("%d",c[i]);
printf("\n");
}
return 0;
}