给定一个长度为 nn 的数字串,向里面插入 kk 个乘号,输出可以得到的最大结果。
注意:插入乘号之后的每个数可以有前导0。
输入格式
第一行输入两个整数 n,kn,k。
第二行输入长度为 nn 的一个数字序列。
输出格式
输出可以得到的最大结果。
数据范围
1≤k<n≤101≤k<n≤10
输入样例:
4 2
1234
输出样例:
144
代码实现:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int n,m;
string s;
cin>>n>>m>>s;
int res=0;
int cnt=n-1;
for(int i=0;i<1<<cnt;i++)
{
int t=0;
for(int j=0;j<cnt;j++)
{
t+=i>>j&1;
}
if(t==m)
{
int p=1;
string str=s.substr(0,1);
for(int j=0;j<cnt;j++)
{
if(i>>j&1)
{
p=p*stoll(str);
str=s.substr(j+1,1);
}
else
{
str+=s[j+1];
}
}
p=p*stoll(str);
res=max(res,p);
}
}
cout<<res<<endl;
return 0;
}