问题 F: 简单A*B时间限制: 1 Sec 内存限制: 128 MB
提交: 34 解决: 21
[提交][状态][讨论版]
题目描述
这是一个非常简单的题,计算A*B的值。
输入
第一行:数A
第二行:数B
数A,B是不超过1000位的正整数。
输出
A*B的值,答案独占一行。
样例输入
123456
234567
样例输出
28958703552
#include<stdio.h>
#include<string.h>
int main()
{
char a[1010],b[1010];
int lena,lenb,l,n,c[2010],i;
while(scanf("%s%s",a,b)!=EOF)
{
lena=strlen(a),lenb=strlen(b);
l=lena+lenb;
memset(c,0,(l+5)*sizeof(int));
for(int j=0;j<lena;j++)
for(int k=0;k<lenb;k++)
c[j+k]+=(a[j]-'0')*(b[k]-'0');
for(i=l-2;i>0;i--)
c[i-1]+=c[i]/10,c[i]=c[i]%10;
for(i=0;i<l-1;i++)
printf("%d",c[i]);
printf("\n");
}
return 0;
}
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char a[1005],b[1005];
int s[10000]={0},i,j,L1,L2,k=0,t=0;
int aa[1005],bb[1005];
scanf("%s",a);
scanf("%s",b);
L1=strlen(a);
L2=strlen(b);
for(i=L1-1; i>=0; i--)
{
aa[k++]=a[i]-'0';
}
for(j=L2-1; j>=0; j--)
{
bb[t++]=b[j]-'0';
}
for(i=0; i<L1; i++)
{
for(j=0;j<L2; j++)
{
s[i+j]+=aa[i]*bb[j];
if(s[i+j]>=10)
{
s[i+1+j]+=s[i+j]/10;
s[i+j]=s[i+j]%10;
}
}
}
for(i=9999;i>0;i--)
{
if(s[i]!=0)
{
for(j=i;j>=0;j--)
{
printf("%d",s[j]);
}
break;
}
}
return 0;
}