记录编号 371936 评测结果 AAAAAAAAAA
题目名称 乘法问题 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2017-02-17 12:31:16 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//#define LOCAL
void dfs(int,int,int);
void work();
int w[50],N,K;
long long num[50],maxx;
long long ans[50];
char tmp;
int main()
{
#ifndef LOCAL
	freopen("chf.in","r",stdin);
	freopen("chf.out","w",stdout);
#endif
	scanf("%d%d",&N,&K);
	for(int i(0);i<N;++i)
	{
		cin>>tmp;
		num[i]=tmp^48;
	}
	w[K+1]=N;
	dfs(1,K,1);
	cout<<maxx;
	return 0;
}
void dfs(int a,int b,int c)
{
	for(int i=a;i<=N-b;i++)
	{
		w[c]=i;
		if(b==1)
		{
			work();
		}
		else dfs(i+1,b-1,c+1);
	}
	return ;
}
void work()
{
	memset(ans,0,sizeof(ans));
	for(int i=0;i<=K;++i)
	{
		if(w[i+1]-w[i]>15)return ;
	}
	for(int i=0;i<=K;++i)
	{
		for(int j(w[i]);j<w[i+1];++j)
		{
			ans[i]=(ans[i]<<1)+(ans[i]<<3)+num[j];
		}
	}
	long long p(1);
	for(int i=0;i<=K;++i)
	  p*=ans[i];
	if(p>maxx)maxx=p;
}