求助本地运行没问题交上去不行

P1303 A*B Problem

Rain3721 @ 2024-11-06 09:04:51

#include<bits/stdc++.h>
using namespace std;
#define MAX 2000
string s1,s2;
int a[MAX],b[MAX],ans[MAX];
int checkmult(){
    for(int i=0;i<MAX;i++){
        if(ans[MAX-i-1]>9){
            ans[MAX-i-2]+=ans[MAX-i-1]/10;
            ans[MAX-i-1]%=10;
        }
    }
    return 0;
}
int input_a(string s){
    int l=s.size();
    for(int i=0;i<l;i++) a[MAX-i-1]=s[l-i-1]-'0';
    return 0;
}
int input_b(string s){
    int l=s.size();
    for(int i=0;i<l;i++) b[MAX-i-1]=s[l-i-1]-'0';
    return 0;
}
int mult(){
    int i,j;
    int m=s1.size();
    int n=s2.size();
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            ans[MAX-i-j-1]+=b[MAX-1-i]*a[MAX-1-j];
        }
    }
    return 0; 
}
void print(){
    int j=0;
    for(j;j<MAX;j++) if(ans[j]>0) break;
    if(j==MAX) cout<<0;
    else for(int i=j;i<MAX;i++) cout<<ans[i];
}
int main(){
    getline(cin,s1);
    getline(cin,s2);
    input_a(s1);
    input_b(s2);
    for(int i=0;i<MAX;i++) ans[i]=0;
    mult();
    checkmult();
    print();
    return 0;
}

by zjr2014 @ 2024-11-06 09:38:02

@Rain3721

#include<bits/stdc++.h>
using namespace std;
int a[1000001]={0},alen,b[1000001]={0},blen,c[1000001]={0},clen;
string x,y;
int main(){
    cin>>x>>y;
    for(int i=0;i<x.size();i++){
        a[x.size()-i]=x[i]-'0';
        alen++;
    }
    for(int i=0;i<y.size();i++){
        b[y.size()-i]=y[i]-'0';
        blen++;
    }
    for(int i=1;i<=alen;i++){
        for(int j=1;j<=blen;j++){
            c[i+j-1]+=a[i]*b[j];
            c[i+j]+=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
    }
    clen=alen+blen-1;
    if(c[alen+blen]!=0){
        clen++;
    }
    for(int i=clen;i>=2;i--){
        if(c[i]==0){
            clen--;
        }
        else{
            break;
        }
    }
    for(int i=clen;i>=1;i--){
        cout<<c[i];
    }
    return 0;
}

by Rain3721 @ 2024-11-06 13:25:12

@zjr2014 过了谢谢


by zjr2014 @ 2024-11-06 15:40:29

@Rain3721 能不能壶关一下


by Rain3721 @ 2024-11-07 12:33:23

@zjr2014 可


|