几乎全错!!!求救!!!
查看原帖
几乎全错!!!求救!!!
1339620
cx2013楼主2024/9/15 11:35
#include<bits/stdc++.h>
using namespace std;
string s,f[41][7];
int m[100000],n[100000],c[100000];
string mul(string a,string b){
    int lena,lenb,x;
    lena=a.size();
    lenb=b.size();
    for(int i=1;i<=lena;++i){
        m[i]=a[lena-i]-'0';
    }
    for(int i=1;i<=lenb;++i){
        n[i]=b[lenb-i]-'0';
    }
    for(int i=1;i<=lena+lenb;++i){
        c[i]=0;
    }
    for(int i=1;i<=lenb;++i){
        x=0;
        for(int j=1;j<=lena;++j){
             c[i+j-1]+=m[j]*n[i]+x;
             x=c[i+j-1]/10;
             
             x=c[i+j-1]%=10;
        }
        c[i+lena]=x;
    }
    string k;
    bool flag=true;
    for(int i=lena+lenb;i>0;--i){
        if(c[i]!=0){
            for(int j=i;j>0;j--){
                k+=c[j]+48;
                
            }
            
            flag=false;
            break;
        }
        
    }
    if(flag){
        return "0";
    }
    return k;
}
string maxn(string a,string b){
    if(a.size()!=b.size()){
        return a.size()>b.size()?a:b;
    }
}
string a(int start,int end){
    string cnt;
    while(start<=end){
        cnt+=s[start];
        start++;
    }
    return cnt;
}
int main(){
    int n,k;
    cin>>n>>k;
    char q;
    s.resize(1);
    for(int i=1;i<=n;++i){
        cin>>q;
        s+=q;
    }
    for(int i=1;i<=n;++i){
        f[i][0]=a(1,i);
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=k;++j){
            for(int l=1;l<i;++l){
                f[i][j]=maxn(f[i][j],mul(f[l][j-1],a(l+1,i)));
                
            }
        }
    }
    cout<<f[n][k];
    return 0;
}
2024/9/15 11:35
加载中...