用 unsigned __int128 有几个点 Re 了,如果用 __int128 就不会Re
这是为啥捏
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string n;
ll l,a[50],k;
unsigned __int128 ans;
void p(unsigned __int128 num)
{
if(num>9) p(num/10);
putchar(num%10+'0');
}
void dfs(ll w,ll m,unsigned __int128 res)
{
if(m==k)
{
unsigned __int128 js=0;
for(int i=w+1;i<=l;i++)
js=js*10+a[i];
res*=js;
ans=max(ans,res);
return ;
}
for(int i=w+1;i<l;i++)
{
unsigned __int128 js=0;
for(int j=w+1;j<=i;j++)
js=js*10+a[j];
//cout<<w<<' '<<m<<' '<<res<<' ';
res*=js;
m++;
//cout<<js<<" "<<res<<endl;
dfs(i,m,res);
m--;
res/=js;
}
}
int main()
{
cin>>l>>k;
cin>>n;
for(int i=0;i<l;i++)
a[i+1]=n[i]-'0';
for(int i=1;i<l;i++)
{
unsigned __int128 js=0;
for(int j=1;j<=i;j++)
js=js*10+a[j];
dfs(i,1,js);
}
p(ans);
return 0;
}