【51nod】1027 大数乘法

来源:互联网 发布:freebsd python 编辑:程序博客网 时间:2024/06/06 00:57

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示例
123456234567
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;}



0 0