60RE求助
查看原帖
60RE求助
1029588
Lao_Wang_Ba楼主2025/1/19 09:30

大佬们帮帮忙,没搞懂这段代码为什么会炸

#include<bits/stdc++.h>
using namespace std;

string amb(string A,string B){
    if(A=="0" or B=="0"){
        return "0";
    }
    int a[B.size()],b[A.size()];
    for(int i=0;i<max(A.size(),B.size());i++){
        if(i<A.size()){
            a[i]=A[A.size()-i-1]-'0';
        }
        if(i<B.size()){
            b[i]=B[B.size()-i-1]-'0';
        }
    }
    string ans="";
    int last=0;
    // int ans[A.size()+B.size()]={0};
    for(int i=0;i<A.size();i++){
        for(int j=0;j<B.size();j++){
            ans[i+j]+=a[i]*b[j];
        }
    }
    for(int i=0;i<A.size()+B.size();i++){
        if(ans[i]>9){
            ans[i+1]+=ans[i]/10;
            ans[i]=ans[i]%10;
        }
    }
    string anser="";
    bool flag=false;
    for(int i=A.size()+B.size()-1;i>=0;i--){
        if(ans[i]!=0){
            flag=true;
        }
        if(flag){
            anser+=ans[i]+'0';
        }
    }

    return anser;
}

int main() {
    string a, b;
    cin >> a >> b;
    cout<<amb(a, b)<<endl;

    return 0;
}
2025/1/19 09:30
加载中...