求调qwq
查看原帖
求调qwq
569085
xjking楼主2024/4/4 22:37

Subtask #1 全部AC

Subtask #0 全部WA

#include<bits/stdc++.h>
using namespace std;
char a[50];
int n,m;
string f[50][50]={"0"},r[50][10]={"0"};
string mcl(string a, string b){
    string t;
    if(a[0]=='0'||b[0]=='0')return "0";
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    int c[100]={0},k=a.size()+b.size()+1;
    for(int i=0; i<a.size(); i++){
        for(int j=0; j<b.size(); j++){
            c[i+j]+=(a[i]-'0')*(b[j]-'0');
            c[i+j+1]+=c[i+j]/10;
            c[i+j]%=10;
        }
	}
    while(c[k]==0&&k>=0)k--;
    while(k>=0)t.push_back(c[k--]+'0');
    return t;
}
string maxx(string a,string b){
	if(a.size()>b.size())return a;
	if(a>b)return a;
	return b;
}
int main(){
	scanf("%d%d", &n, &m);
	scanf("%s", a+1);
	for(int i=1; i<=n; i++){
		f[i][i]=a[i];
		for(int j=i+1; j<=n; j++){
			if(f[i][j-1]=="0")f[i][j]=a[j];
			else f[i][j]=f[i][j-1]+a[j];
		}
		r[i][0]=f[1][i];
	}
	for(int i=1; i<=n; i++){
		for(int j=1; j<=m; j++){
			for(int k=j; k<i; k++){
				string l=mcl(r[k][j-1],f[k+1][i]);
				r[i][j]=maxx(r[i][j],l);
			}
		}
	}
	cout<<r[n][m];
	return 0;
}
2024/4/4 22:37
加载中...