蒟蒻求助,80分
查看原帖
蒟蒻求助,80分
416959
alexbear103楼主2021/9/5 10:53
#include <bits/stdc++.h>
using namespace std;
int n, k; __int128 a[105], f[105][105]; 
char c;
__int128 calc(int s, int t) {
	long long ret = 0;
	for (int i = s; i <= t; ++i) {
		ret *= 10;
		ret += a[i];
	}
	return ret;
}
void print(__int128 x) {
    if (x == 0) return;
	print(x / 10);
	putchar(x % 10 + '0');
} 
int main() {
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; ++i) {
		cin >> c;
		a[i] = c - '0';
	} 
	for (int i = 1; i <= n; ++i) {
		for (int j = 0; j <= k; ++j) {
			if (j == 0) {
				f[i][j] = calc(1, i);
			} else {
				for (int l = 1; l < i; ++l) {
					f[i][j] = max(f[l][j - 1] * calc(l + 1, i), f[i][j]);
				}
			}
		}
	}
    print(f[n][k]);
	return 0;
}
2021/9/5 10:53
加载中...