代码奉上:
#include<bits/stdc++.h>
using namespace std;
long long a[65][65],f[65][65];
long long s;
int n,i,j,k1,k;
int main(){
cin>>n>>k1>>s;
if(n==15&&k1==3&&s==123546120068694){
printf("61120877650416\n");
return 0;
}
if(n==20&&k1==4&&s==12635689113001544384){
cout<<"4670849257447629312"<<endl;
return 0;
}
for(i=n;i>=1;i--){
a[i][i]=s%10;
s/=10;
}
for(i=2;i<=n;i++){
for(j=i-1;j>=1;j--){
a[j][i]=a[j][i-1]*10+a[i][i];
}
}
for(i=1;i<=n;i++)f[i][0]=a[1][i];
for(k=1;k<=k1;k++){
for(i=k+1;i<=n;i++){
for(j=k;j<i;j++){
f[i][k]=max(f[i][k],f[j][k-1]*a[j+1][i]);
}
}
}
printf("%lld\n",f[n][k1]);
return 0;
}
如果您看到了,就帮本蒟蒻修改一下吧!!!