您的位置:首页 > 其它

【51nod】1027 大数乘法

2016-12-10 10:44 274 查看
1027 大数乘法


基准时间限制: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<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<stdio.h>
#include<string.h>
int main()
{
char a[1010],b[1010],*pa,*pb;bool za,zb,flag;
int lena,lenb,l,n,c[2010],i;
while(scanf("%s%s",a,b)!=EOF)
{
za=a[0]=='-';zb=b[0]=='-';
flag=za^zb;
pa=a+za,pb=b+zb;
lena=strlen(pa),lenb=strlen(pb);
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]+=(pa[j]-'0')*(pb[k]-'0');
for(i=l-2;i>0;i--)
c[i-1]+=c[i]/10,c[i]=c[i]%10;
if(flag) printf("-");
for(i=0;i<l-1;i++)
printf("%d",c[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: