70分求助
查看原帖
70分求助
932757
LYH173楼主2023/5/13 09:44
#include <bits/stdc++.h>
using namespace std;
long long a[10010], p[30010], cnt[1010], x;
int ans = 1e9;
int main() {
	int n, m1, m2;
	cin >> n >> m1 >> m2;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	for (int i = 2; i <= m1; i++) {
		while (m1 % i == 0) {
			p[i]++;
			if (cnt[x] != i) cnt[++x] = i;
			m1 /= i;
		}
	}
	for (int i = 0; i < x; i++) {
		p[cnt[i]] *= m2;
	}
	/*
	for (int i = 1; i <= x; i++) {
		cout << cnt[i] << " " << p[cnt[i]] << endl;
	}*/
	for (int i = 1; i <= n; i++) {
		int mi = 0;
		for (int j = 1; j <= x; j++) {
			int t = 0;
			if (a[i] % cnt[j] != 0) {
				mi = 1e9; 
				break;	
			}else {
				while (a[i] % cnt[j] == 0) {
					t++;
					a[i] /= cnt[j];
				}
				mi = max(mi, (int)ceil(1.0 * p[cnt[j]] / t));
			}
			
		}
		ans = min(ans, mi);
	}
	if (ans != 1e9) cout << ans;
	else cout << -1;
	return 0;
} 
2023/5/13 09:44
加载中...