记录编号 248928 评测结果 AAAAAAAAAA
题目名称 [NOIP 2000PJ]乘积最大 最终得分 100
用户昵称 Gravatar水墨青花 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-04-11 16:36:18 内存使用 0.33 MiB
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<string>

using namespace std;

void Read();
void Work();

int n,k;
long long num[31][31];
long long f[31][31]; 
char str[31];

int main()
{
	freopen("cjzd.in","r",stdin);
	freopen("cjzd.out","w",stdout);
	
	memset(num,0,sizeof(num));
	
	Read();
	Work();
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}

void Read()
{
	scanf("%d%d",&n,&k);
	k++;	//使用k个乘号,分成k+1!!!部分…… 
	scanf("%s",str+1);
	for(int i=1;i<=n;i++)
	{
		long long x=0;
		for(int j=i;j<=n;j++)
		{
			x=x*10+str[j]-'0';
			num[i][j]=x;
		}
	}
}

void Work()
{
	for(int i=1;i<=n;i++)
	{
		f[i][1]=num[1][i];
	}

	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=min(i,k);j++)
		{
			for(int o=j-1;o<i;o++)
			{
				f[i][j]=max(f[i][j],f[o][j-1]*num[o+1][i]);
			}
		}
	}
	

	printf("%lld",f[n][k]);
}