90pts TLE玄关求调
查看原帖
90pts TLE玄关求调
1235819
_std_xzh楼主2024/10/16 13:15
#include<bits/stdc++.h>
using namespace std;
int n , m1 , m2 , a , k[1000005] , cur , c[1000005] , minn = 1e9 , p[1000005];
int main(){
    cin >> n >> m1 >> m2;
    for(int i = 2;i * i <= m1;i++){
        if(m1 % i == 0){
            int cnt = 0;
            while(m1 % i == 0){
                cnt++;
                m1 /= i;
            }
            k[++cur] = cnt;
            p[cur] = i;
//            cout << i << '^' << cnt << '\n';
        }
    }
    if(m1 > 1)k[++cur] = 1 , p[cur] = m1;
    while(n--){
        cin >> a;
        memset(c , 0 , sizeof(c));
        bool f = 1;
        int maxn = 0;
        for(int i = 1;i <= cur;i++){
        	int cnt = 0;
        	while(a % p[i] == 0){
        		cnt++;
        		a /= p[i];
			}
			c[i] = cnt;
			if(!c[i] && k[i]){
				f = 0;
				break;
			}
			maxn = max(maxn , int(ceil((m2 * k[i] * 1.0) / c[i])));
		}
		if(f)minn = min(minn , maxn);
    }
    if(minn == 1e9)cout << -1;
    else cout << minn;
    return 0;
}
2024/10/16 13:15
加载中...