0分求调,码风良好
查看原帖
0分求调,码风良好
1315459
Ericwer楼主2024/11/23 22:24

两个WA,其他全RE

#include <bits/stdc++.h>
using namespace std;
int N, m1, m2;
int s;
int pm[45000], ps[45000], ery[10005];
void prime_sieve(int n){
	int now = 2;
	while(n > 1){
		if(n % now == 0){
			ps[now]++;
			n /= now;
		}
		else now++;
	}
}
signed main(){
	cin >> N;
	cin >> m1 >> m2;
	int po_m = pow(m1, m2), po = po_m;
	int  now = 2;
	while(po_m>1){
		if(po_m % now == 0){
			pm[now]++;
			po_m /= now;
		}
		else now++;
	}
	int minn = 0x3f3f3f3f;
	for(int i = 1; i <= N; i++){
		cin >> s;
		prime_sieve(s);
		
		int jmx = -0x3f3f3f3f;
		for(int j = 1; j <= max(s, po); j++){
			if(pm[j] != 0 && ps[j] == 0){
				ery[i] = 0x3f3f3f3f;
				break;
			}
			else if(ps[j] < pm[j]){
				int z = ceil(pm[j] / (ps[j]*1.0));
				jmx = max(jmx, z);
			}
			else jmx = max(jmx, 1);
		}
		if(ery[i] != 0x3f3f3f3f) ery[i] = jmx;
		for(int j = 1; j <= 45000; j++) ps[j] = 0;
	}
	for(int i = 1; i <= N; i++){
		if(ery[i] != 0x3f3f3f3f){
			minn = min(minn, ery[i]);
		}		
	}
	if(minn != 0x3f3f3f3f) cout << minn;
	else cout << -1;
	return 0;
} 
2024/11/23 22:24
加载中...