80pts求调
查看原帖
80pts求调
723198
AAA404楼主2022/8/4 20:21

看了题解的思路,上了个__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;
}

2022/8/4 20:21
加载中...