救救#最后一个点TLE了#还有一些小疑问

P1303 A*B Problem

syxuu @ 2022-10-28 23:47:22

大佬求助 最后一个点 TLE了 而且我输入之后需要特判 如果没有那个两个判断 输入0 10会输出00;1 0啥也不输出;

#include<iostream>
#include<cstring>

using namespace std;

string jiafa(string str1,string str2);
string chengfa(string str1,string str2);

int main()
{
    string str1,str2;
    cin>>str1>>str2;
    if(str2[0]=='0')
    cout<<0;
    if(str1[0]=='0')
    {
        cout<<0;
    }
    else{
        cout<<chengfa(str1,str2)<<endl;
    }

    return 0;
}

string chengfa(string str1,string str2)
{
    string str;
    int len_1=str1.length();
    int len_2=str2.length();

    for(int i=len_2-1;i>=0;i--)
    {
        string  str_m;
        int c =str2[i]-'0';
        for(int j=0;j<str2[i]-'0';j++){

            str_m=jiafa(str_m,str1);

        }
        str=jiafa(str,str_m);
        str_m='0';
        str1=str1+'0';
    }

    return str;

}
string jiafa(string str1,string str2)
{
    string str;
    int len_1=str1.length();
    int len_2=str2.length();

    if(len_1>len_2)
    {
        for(int i=1;i<=len_1-len_2;i++)
        {
            str2='0'+str2;
        }
    }
    else{
        for(int i=1;i<=len_2-len_1;i++){
            str1='0'+str1;
        }
    }

    len_1=str1.length();
    len_2=str1.length();
    int temp;
    int jw=0;
    for(int i=len_1-1;i>=0;i--){
        int a=str1[i]-'0';
        int b=str2[i]-'0';
        char c=str2[i];
        temp=str1[i]-'0'+str2[i]-'0'+jw;
        jw=temp/10;
        temp%=10;
        str=char(temp+'0')+str;

    }
    if(jw!=0){
        str=char(jw+'0')+str;
    }

    return str;
}

by jmh_AK_IOI @ 2022-11-02 18:56:41

int x=0;
for(int i=1;i<=lenb;i++){
    x=0;
    for(int j=1;j<=lena;j++){
        c1[i+j-1]+=a1[j]*b1[i]+x;
        x=c1[i+j-1]/10;
        c1[i+j-1]=c1[i+j-1]%10;
    }
    c1[lena+i]=x;
}

|