后两个点,大佬们

P1303 A*B Problem

Yzmddsw @ 2021-10-29 12:40:12

本人学了一周,代码写的不好

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
char a[3000],b[3000];
int main()
{   
    cin>>a>>b;
    if(a[0]=='0'||b[0]=='0')
    {
        cout<<0;
        return 0;
    }
    int stra,strb;
    string m=a;
    string n=b;
    int k=0,s=-1;
    int ans[900000000];
    int e=m.length();
    //cout<<m.length()<<n.length();
    if(n.length()>e)e=n.length();
    for(int i=m.length();i>0;i--)
    {
        s++;
        k=s;
        for(int j=n.length();j>0;j--)
        {
            ans[k]+=((a[i-1]-'0')*(b[j-1]-'0'))%10;
            ans[k+1]+=((a[i-1]-'0')*(b[j-1]-'0'))/10;
            if(ans[k]>=10)
            {
            ans[k+1]++;
            ans[k]=ans[k]%10;
            }
            k++;
        }
    }
    if(ans[k]==0)
    {k--;
    }
    for(int j=k;j>=0;j--)
        {

            cout<<ans[j];
        }
    return 0; 
}

by sc_iwe @ 2021-10-29 12:47:09

Python他不香吗

a=int(input())
b=int(input())
print(a*b)

by Starw @ 2021-10-29 13:17:56

特判一下0


by Starw @ 2021-10-29 13:20:21

int ans[900000000]; 开小一点,放main外面


by Yzmddsw @ 2021-11-03 15:50:13

@dz3284 谢谢,主要问题其实是这里

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
char a[2005],b[2005];
int ans[9000000];
int main()
{   
    cin>>a>>b;
    if(a[0]=='0'||b[0]=='0')
    {
        cout<<0;
        return 0;
    }
    int stra,strb;
    string m=a;
    string n=b;
    int k=0,s=-1;
    int e=m.length();
    //cout<<m.length()<<n.length();
    if(n.length()>e)e=n.length();
    for(int i=m.length();i>0;i--)
    {
        s++;
        k=s;
        for(int j=n.length();j>0;j--)
        {
            ans[k]+=((a[i-1]-'0')*(b[j-1]-'0'))%10;
            ans[k+1]+=((a[i-1]-'0')*(b[j-1]-'0'))/10;
            if(ans[k]>=10)
            {
            ans[k+1]++;
            ans[k]=ans[k]%10;
            }
            if(ans[k+1]>=10)
            {
            ans[k+2]++;
            ans[k+1]=ans[k+1]%10;
            }//这个地方少了一次判断,不然只有一次for可能ans[k+1]>20就会出问题,毕竟是ans++嘛
            k++;
        }
    }
    if(ans[k]==0)
    {k--;
    }
    for(int j=k;j>=0;j--)
        {

            cout<<ans[j];
        }
    return 0; 
}

|