比赛 练习赛 评测结果 AAAAAAAAAA
题目名称 乘积最大 最终得分 100
用户昵称 梦那边的美好ET 运行时间 0.005 s
代码语言 C++ 内存使用 13.68 MiB
提交时间 2019-05-22 11:47:30
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long f[45][60];
char in[66];
int n,k;
long long g[45];
long long cut(int l,int r)
{
    long long end = 0;
    for(int i = l;i <= r;i++)
        end = end * 10 + g[i];
    return end;
}
int main(){ 
	freopen("cjzd.in","r",stdin);        
    freopen("cjzd.out","w",stdout);      
    cin >>n>>k>>in;
    for(int i = 1;i <= n;i++)g[i] = in[i - 1] - '0';
    for(int i=1;i<=n;i++)f[i][0] = cut(1,i);
    for(int i = 2;i <= n;i++){ 
        for(int a = 1;a <= min(i-1,k);a++)
		{  
            for(int b = a;b < i;b++)
			{
				f[i][a]=max(f[i][a],f[b][a-1]*cut(b+1,i));
            }
        }
    }
    cout<<f[n][k];
    return 0;
}