40pts 求条,帮我调出来的人csprp++
查看原帖
40pts 求条,帮我调出来的人csprp++
1118614
I_Love_DS楼主2024/10/23 11:55
#include <bits/stdc++.h>

using namespace std;

const int inf = 1 << 30;

int n, m1, m2, p[30050], ans = inf;
vector <pair <int, int>> v;

void calc(int x, int y) {
	memset(p, 0, sizeof(p));
	for (int i = 2; i * i <= x; i++) 
		while (!(x % i)) 
			p[i] += y, x /= i;
	if (x > 1 && x <= 30000) p[x] += y;
}

int check() {
	int m = 0;
	for (auto i : v) {
		if (!p[i.first]) return inf;
		else m = max(m, (i.second - 1) / p[i.first] + 1);
	}
	return m;
}

int main() {
	scanf("%d%d%d", &n, &m1, &m2);
	calc(m1, m2);
	for (int i = 2; i <= 30000; i++) 
		if (p[i]) 
			v.push_back({i, p[i]});
	for (int i = 1; i <= n; i++) {
		int x;
		scanf("%d", &x);
		calc(x, 1);
		ans = min(ans, check());
	}
	printf("%d", ans == inf ? -1 : ans);
	return 0;
}
2024/10/23 11:55
加载中...