代码如下
#include<bits/stdc++.h>
#define int __int128
using namespace std;
int read() {
char ch; int n,i=1;
ch =getchar();
if(ch=='-') i=-1;
else n = ch-'0';
ch = getchar();
while(ch >= '0' && ch <= '9') {
n = n*10 + ch - '0';
ch = getchar();
}
return n * i;
}
void write(int n) {
if(n<0) {
putchar('-');
n=-n;
}
if(n>10) {
write(n/10);
}
putchar(n%10 + '0');
}
int arr[45];
int a[45][45];
int F[45][7];
signed main() {
int N, K;
N= read(); K = read();
for(int i=1; i<=N; ++i) {
char ch; cin >> ch;
arr[i] = ch-'0';
}
for(int i=1; i<=N; ++i) {
a[i][i] = arr[i];
for(int j=i+1; j<=N; ++j) {
a[i][j] = a[i][j-1] * 10 + arr[j];
}
}
for(int i=0; i<=N; ++i) {
for(int j=0; j<=K; ++j) {
F[i][j] = 1;
}
}
for(int i=1; i<=N; ++i) {
F[i][0] = a[1][i];
for(int j=1; j<=K; ++j) {
for(int k=j+1; k<=i; ++k) {
F[i][j] = max(F[i][j], F[k-1][j-1] * a[k][i]);
}
}
}
write(F[N][K]);
return 0;
}