不开高精和int128能得多少分
查看原帖
不开高精和int128能得多少分
1286488
Xuan3579楼主2024/11/24 20:07

想知道自己写对了吗 评测记录

#include<bits/stdc++.h>
using namespace std;

#define ll long long

const int N = 43;

ll a[N], f[N][N];

int n, K;

ll read(){
	ll x = 1, s = 0;
	char ch = getchar();
	while(ch>'9'||ch<'0'){if(ch=='-')x=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
	return s * x;
}

ll work(int l, int r){
	int sum = 0;
	for(int i = l; i <= r; i++){
		sum = sum * 10 + a[i];
	}
	return sum;
}

char s[N];

int main(){
	n = read(); K = read();
	scanf("%s", s + 1);
	for(int i = 1; i <= n; i++)
		a[i] = s[i] - '0';
	for(int i = 1; i <= n; i++)f[i][0] = work(1, i);
	for(int i = 2; i <= n; i++){
		for(int k = 1; k <= min(K, i - 1); k++){
			for(int j = k; j < i; j++){
				f[i][k] = max(f[i][k], f[j][k - 1] * work(j + 1, i));
			}
		}
	}
	cout << f[n][K];
	return 0;
}
2024/11/24 20:07
加载中...