ilbn20 2015-09-29 08:18 采纳率: 28.6%
浏览 2364

大整数乘法求解

输入两大整数(都是200位内 非负 没前导零) 求其相乘
没看出什么问题 提交网站却显示WA 求点拨

  • 写回答

1条回答 默认 最新

  • ilbn20 2015-09-29 08:20
    关注

    #include
    #include
    using namespace std;
    int main(){
    int cc=0;
    char str[201],ptr[201];
    int st[201]={0};
    int pt[201]={0};
    int a[410]={0};
    cin>>str;
    cin>>ptr;
    int ls=strlen(str);
    int lp=strlen(ptr);

    for(int i=0;i<200;i++){               //将字符串以逆向数组形式存起来
        if(i<ls) st[i]=str[ls-i-1]-'0';
        }
    
    for(int ii=0;ii<200;ii++){            //同上
        if(ii<lp) pt[ii]=ptr[lp-ii-1]-'0';
        }
    
    for(int j=0;j<lp;j++){               //将第一个大整数与第二个按位相乘
            int b[410]={0};
    
            for(int t=0;t<lp+ls+2;t++){  //求出第一整数和另一其中一位的结果
            b[t+j+1]+=(st[t]*pt[j]+b[t+j])/10;
            b[t+j]=(st[t]*pt[j]+b[t+j])%10;
            }
    
            for(int k=0;k<lp+ls+2;k++){ 
            if(a[k]+b[k]>9) a[k]=a[k]+b[k]-10,a[k+1]++;
            else a[k]=a[k]+b[k];
            }           
        }
    
    for(int i=409;i>=0;i--){
        if(a[i]) cc=1;
        if(cc) cout<<a[i];
    } 
    
    if((ls==1&&st[0]==0)||(lp==1&&pt[0]==0)) cout<<"0";
    cout<<endl;
    return 0;
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的