题目:
http://codevs.cn/problem/1017/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef unsigned long long ll;
const ll MAXN=1001;
ll a[MAXN][MAXN];
ll n,k,ans;
char s[MAXN];
void dfs(ll tot,ll l,ll c)
{
if(c==k+1) { ans=max(ans,tot);return;}
if(!c) {for(ll i=1;i<=n;i++) dfs(tot*a[1][i],i+1,c+1);}
else {for(ll i=l;i<=n;i++) dfs(tot*a[l][i],i+1,c+1);}
return;
}
void solve()
{
scanf("%lld%lld%s",&n,&k,s+1);
for(ll i=1;i<=n;i++) a[i][i]=s[i]-'0';
for(ll i=1;i<=n;i++)
for(ll j=i+1;j<=n;j++)
a[i][j]=a[i][j-1]*10+a[j][j];
dfs(1,1,0);
cout<<ans;
return;
}
int main()
{
solve();
return 0;
}