#include <bits/stdc++.h>
using namespace std;
int n,tmp,c,s[100],ret,dp[50][50],l;
char k;
int num(int v,int u)
{
ret=0;
for(int i=v;i<=u;i++)
{ret+=s[i];ret*=10;}
ret/=10;
return ret;
}
int main()
{
scanf("%d%d",&n,&l);
l++;
for(int i=1;i<=n;i++)
{
cin>>n;
s[i]=n-'0';
}
for(int i=0;i<=n;i++)
dp[i][1]=num(1,i);
for(int i=1;i<=n;i++)
for(int k=1;k<=l;k++)
for(int j=0;j<=i;j++)
dp[i][k]=max(dp[i][k],dp[j][k-1]*num(j+1,1));
cout<<dp[n][l];
return 0;
}
题目Link
(将在另外一个OJ提交,测试数据不需要高精)