60分求助!!!

P1303 A*B Problem

WRTLEO2 @ 2020-03-21 23:14:30

给大家看一下代码

#include<bits/stdc++.h>

using namespace std;

int main(){

    char s1[256],s2[256];
    int a[256]={},b[256]={},c[256]={},lena,lenb,lenc;
    cin>>s1>>s2;
    lena=strlen(s1);
    lenb=strlen(s2);
    for(int i=0;i<lena;i++){
        a[lena-i]=s1[i]-48;
    }
    for(int i=0;i<lenb;i++){
        b[lena-i]=s2[i]-48;
    }//倒叙存储
    for(int i=1;i<=lenb;i++){
        int x=0;//用于存放进位 
        for(int j=1;j<=lena;j++){
            c[i+j-1]=a[j]*b[i]+x+c[i+j-1];
            x=c[i+j-1]/10;
            c[i+j-1]%=10;
        } 
        c[i+lena]=x;//把进位放在最高位上 
    } 
    lenc=lena+lenb;
    while(c[lenc]==0&&lenc>1){
        lenc--;
    } 
    for(int i=lenc;i>0;i--){
        cout<<c[i];
    }
    return 0;
} 

问一下,我还有救吗?


by twelveZ @ 2020-03-21 23:17:41

@WRTLEO2 数组小了,开2000+


by WRTLEO2 @ 2020-03-21 23:19:31

@code_universe 数组开小了?可我TLE了啊


by twelveZ @ 2020-03-21 23:20:59

@WRTLEO2 越界会产生各种各样的玄学错误,不一定是RE.


by WRTLEO2 @ 2020-03-21 23:22:53

谢谢大佬,已关注


by 给我一个笑容 @ 2020-03-29 13:50:55

@WRTLEO2

 for(int i=0;i<lenb;i++){
        b[lena-i]=s2[i]-48;
    }//倒叙存储

你这块的下标写错了,是应该是lenb(捂脸)


by WRTLEO2 @ 2020-03-29 14:02:50

@给我一个笑容 谢谢(捂脸


|