比赛 练习赛 评测结果 AAAAAAAAAA
题目名称 乘积最大 最终得分 100
用户昵称 liujiaqi 运行时间 0.005 s
代码语言 C++ 内存使用 13.68 MiB
提交时间 2019-05-23 14:15:59
显示代码纯文本
#include<cstdio>
#include<string>
#include<iostream>
#define maxn 50
#define ll long long

using namespace std;

string s;
int n,k;
ll f[maxn][maxn];

ll mul(int x,int y){
    ll sum=0,w=1;
    for(int i=y;i>=x;i--){
        sum+=(s[i]-'0')*w;w*=10;
    }
    return sum;
}

int main(){
	freopen("cjzd.in","r",stdin);
	freopen("cjzd.out","w",stdout);
    scanf("%d%d",&n,&k);cin>>s;
    for(int i=0;i<n;i++)f[0][i]=mul(0,i);
    for(int i=1;i<=k;i++)
        for(int j=1;j<=n;j++)
            for(int p=j;p>=i;p--)
                f[i][j]=max(f[i][j],f[i-1][p-1]*mul(p,j));
    printf("%lld",f[k][n-1]);
    return 0;
}