比赛 防止颓废的小练习v0.4 评测结果 AAAAAAAAWA
题目名称 乘积最大 最终得分 90
用户昵称 dududu 运行时间 0.008 s
代码语言 C++ 内存使用 0.34 MiB
提交时间 2016-10-25 09:07:41
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;

#define KK 10
#define KN 50
#define LL long long
int N,K;
int data[KN];
LL f[KK][KN];
LL base[KN][KN];

void init(){
	
	scanf("%d %d",&N,&K);
	
	for(int i=1;i<=N;i++) scanf("%1d",&data[i]);	
	
	for(int i=1;i<=N;i++)
		for(int j=i;j<=N;j++)
			base[i][j]=base[i][j-1]*10+data[j];
	
	for(int i=1;i<=N;i++) f[0][i]=base[1][i];
}

void sol(){
	
	for(int k=1;k<=K;k++)
		for(int i=k+1;i<=N;i++)
			for(int j=1;j<=i;j++)	
				f[k][i]=max(f[k][i],f[k-1][j-1]*base[j][i]);
	
	printf("%ld",f[K][N]);
}

int main(){
	
	freopen("cjzd.in","r",stdin);
	freopen("cjzd.out","w",stdout);
	init();
	sol();
	return 0;
}