WuK 2015-08-15 21:47:41
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
unsigned long long n,k,f[40][40][32]={0};
string s;
unsigned long long work(int l,int r,int k)
{
if(f[l][r][k])return f[l][r][k];
if(k)for(int i=l+k/2;i<=r-k/2;i++)f[l][r][k]=max(f[l][r][k],work(l,i,k/2)*work(i+1,r,k-k/2-1));
else for(int i=l;i<=r;i++)f[l][r][k]=f[l][r][k]*10+s[i]-'0';
return f[l][r][k];
}
int main()
{
cin>>n>>k>>s;
cout<<work(0,n-1,k);
}