https://www.luogu.org/problemnew/show/P1018
#include <bits/stdc++.h>
using namespace std;
string str;
long long f[7][41];
long long g(int start, int end){
long long s=0;
int t=1;
for(int i=end; i>=start; i--){
s = s + (str[i]-'0') * t;
t = t * 10;
}
return s;
}
int main(){
int n,k; cin >> n >>k;
cin >>str;
for(int i=0; i<n; i++) f[0][i] = g( 0 , i);
for(int i=1; i<=k; i++){
for( int j=i; j<n; j++){
long long leizhu = f[i-1][j-1] * g(j,j);
for(int h = j-1; h>=i; h--){
leizhu = max( f[i-1][h-1] * g(h,j) ,leizhu);
}
f[i][j] = leizhu;
}
}
for(int i=0; i<=k; i++){
for(int j=0;j<n; j++ ) cout << f[i][j] << " ";
cout << endl;
}
cout << f[k][n-1];
}
对一半的题,满分需要高精度。