51nod 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<cstdio>
#include<cstring>
using namespace std;
char s1[1011],s2[1011];
int len1,len2,a[1011],b[1011],c[2011];
int main()
{
    scanf("%s%s",s1,s2);
    len1=strlen(s1);len2=strlen(s2);
    int x=0,y=0;
    for(int i=len1-1;i>=0;i--) a[++x]=s1[i]-'0';a[0]=x;
    for(int i=len2-1;i>=0;i--) b[++y]=s2[i]-'0';b[0]=y;
    for(int i=1;i<=a[0];i++)
     for(int j=1;j<=b[0];j++)
      {
           c[i+j]+=(c[i+j-1]+a[i]*b[j])/10;
         c[i+j-1]=(c[i+j-1]+a[i]*b[j])%10;
      }
    c[0]=a[0]+b[0];
    while(!c[c[0]]&&c[0]>1) c[0]--;
    for(int i=c[0];i;i--) printf("%d",c[i]);
}

错误:c数组大小应为a和b大小之和

posted @ 2017-03-27 08:45  TRTTG  阅读(191)  评论(0编辑  收藏  举报