求助,最后两点WA,超次数了,下不下来了

P1303 A*B Problem

sleepwalking1 @ 2022-07-13 13:39:43

#include<bits/stdc++.h> 
using namespace std;
char a[210],b[210];
int a1[10000],b1[10000],c1[10000];
int main()
{
    cin>>a>>b;
   int lena=strlen(a);
   int lenb=strlen(b);
   if(lena==1 && a[0]=='0'){
        cout<<0<<endl;
        return 0;
    } 
    for(int i=0;i<lena;i++) 
        a1[i]=a[lena-i-1]-'0';  
    for(int i=0;i<lenb;i++)
        b1[i]=b[lenb-i-1]-'0';
    for(int i=0;i<lena;i++){
        for(int j=0;j<lenb;j++){
            c1[i+j]+=a1[i]*b1[j];
            while(c1[i+j]>=10){
                c1[i+j+1]++;
                c1[i+j]-=10;
            }
        }
    }
    if(c1[lena+lenb-1]) lena++;
    for(int i=lena+lenb-2;i>=0;i--) cout<<c1[i];
    return 0;
}

by dingshengyang @ 2022-07-13 13:42:14

@sleepwalking1 我帮你下


by dingshengyang @ 2022-07-13 13:44:15

@sleepwalking1 第4个点:

输入:

10153121203431213503345456153440628076307751234545615344063554680646079420928076307751203431213503345456153440635547808670457735546806460794209280763077512034312135033454561534406355478086704577687063554680646079420928076307751234545615344063554680646079420928076307751203431213503345456153440635547804577355468064607942092807630775120343121350334545615344063554780867045776870635546806460786704577687063554680034312135033454561
696545465468167657656275465464678617648648678280763077512345456153440635546806460794209280763077512034312135033454561534406355478086704577355468064607942092807630775120343121350334545615344063554780867045776870635542807630775123454561534406355468064607942092807630775120343121350334545615344063554780457768624780457735546806460794209280763077512034312135033454561534406355478086704577687063554680646792957978948924988

输出:

7072110534598717176912695742264535065308288288997015047555792337135421062330287334614170504486081585103607514272658223716989727906823978298902147489621316383752762596093000470760309252055973820470401785993854977638617584740744079604448761229768278691072314168757885357810857561382779397400630728227929327104495329137090719784488990410086310926037498954450893567317219892493049182552576811904772366694312024274959389157039989368347405555075510791494691883581250804630607880838377624460737671178398165035137911457363217803140053888576219053350712581494173218856681026953930215523152534490503255660900821163251460793024309740492134354089105238764123533599844745604547405165548326759277931134816334867829622125118209145223841071007800250069966433665748163708822329633632074852409991209189613248181252691716693291128336651713020979370312906895470268

by dingshengyang @ 2022-07-13 13:45:02

@sleepwalking1 不能再下了,我只剩3次机会了


by sleepwalking1 @ 2022-07-13 13:45:20

谢谢,好人一生平安


by qnqfff @ 2022-07-13 13:45:21

数组开小了


by sleepwalking1 @ 2022-07-13 13:45:53

关注了


by sleepwalking1 @ 2022-07-13 13:46:26

我试一下 谢谢


by sleepwalking1 @ 2022-07-13 13:50:09

#include<bits/stdc++.h> 
using namespace std;
char a[1000000],b[1000000];
int a1[1000000],b1[1000000],c1[1000000];
int main()
{
    cin>>a>>b;
    int lena=strlen(a);
    int lenb=strlen(b);
    if(lena==1 && a[0]=='0'){
        cout<<0<<endl;
        return 0;
    } 
    for(int i=0;i<lena;i++) a1[i]=a[lena-i-1]-'0';  
    for(int i=0;i<lenb;i++) b1[i]=b[lenb-i-1]-'0';
    for(int i=0;i<lena;i++){
        for(int j=0;j<lenb;j++){
            c1[i+j]+=a1[i]*b1[j];
            while(c1[i+j]>=10){
                c1[i+j+1]++;
                c1[i+j]-=10;
            }
        }
    }
    if(c1[lena+lenb-1]) lena++;
    for(int i=lena+lenb-2;i>=0;i--) cout<<c1[i];
    return 0;
}

开小了 AC,谢谢


|