看了题解的思路,上了个__int128,结果80pts,求调
#include<bits/stdc++.h>
#define itn int
#define tin int
#define nit int
#define tni int
#define nti int
#define scnaf scanf
#define ptrinf printf
#define icn cin
#define cni cin
#define inc cin
#define nci cin
#define nic cin
#define cuot cout
#define ocut cout
#define fro for
#define int __int128
using namespace std;
__int128 read() {
char ch; int n=0,i=1;
ch =getchar();
while(ch<'0' || ch>'9')
{
if(ch=='-')i=-1;
ch=getchar();
}
while(ch >= '0' && ch <= '9') {
n = n*10 + ch - '0';
ch = getchar();
}
return n * i;
}
void print(__int128 x)
{
if (!x) return ;
if (x < 0) putchar('-'),x = -x;
print(x / 10);
putchar(x % 10 + '0');
}
int n,k,a[41],f[100][100];
signed main()
{
n=read(),k=read();
for(int i=1;i<=n;i++)
{
char ch;
cin>>ch;
a[i]=ch-'0';
}
f[1][0]=a[1];
for(int i=1;i<=n;i++)
{
for(int j=0;j<=min(i-1,k);j++)
{
if(j==0)
f[i][j]=f[i-1][j]*10+a[i];
else
for(int kk=1;kk<i;kk++)
{
int ans=0;
for(int x=kk+1;x<=i;x++)
{
ans=ans*10+a[x];
}
f[i][j]=max(f[i][j],f[kk][j-1]*ans);
}
}
}
print(f[n][k]);
return 0;
}