数据还需加强
查看原帖
数据还需加强
910101
dlsnb楼主2023/7/23 00:53

还是没卡掉一种枚举只因数 nnn \sqrt n 的做法

我还是很认同我的码风的,不写注释大家应该都能开得懂

//
//  main.cpp
//  T349349 [yLOI2022] 西施江南
//
//  Created by SkyWave Sun on 2023/7/22.
//

#include <iostream>
#include <unordered_set>
#include <bitset>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
#define N (int)5e5 + 1
#define V (int)1e8 + 1
int primes[5761457];
bitset<V> mark;
void init() {
    for (int i = 2; i * i <= V - 1; i += (i == 2 ? 1 : 2)) {
        if (!mark[i]) {
            for (int j = i * i; j <= V - 1; j += i) {
                mark[j] = true;
            }
        }
    }
}
void solve() {
    int n;
    scanf("%d", &n);
    vector<int> vec(n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", &vec[i]);
    }
    if (n == 2) {
        puts("Yes");
        return;
    }
    unordered_set<int> st;
    int len = (int)vec.size();
    for (int i = 0; i < len; ++i) {
        int tmp = vec[i];
        if (!mark[tmp]) {
            if (st.count(tmp)) {
                puts("No");
                return;
            }else {
                st.insert(tmp);
            }
        }else {
            for (int j = 1; primes[j] <= tmp; ++j) {
                if (tmp % primes[j] == 0) {
                    if (st.count(primes[j])) {
                        puts("No");
                        return;
                    }
                    st.insert(primes[j]);
                    while (tmp % primes[j] == 0) {
                        tmp /= primes[j];
                    }
                }
            }
            if (tmp != 1) {
                if (st.count(tmp)) {
                    puts("No");
                    return;
                }
                st.insert(tmp);
            }
        }
    }
    puts("Yes");
}
int main(int argc, const char * argv[]) {
    init();
    int cnt = 0;
    for (int i = 2; i <= V - 1; i += (i == 2 ? 1 : 2)) {
        if (!mark[i]) {
            primes[++cnt] = i;
        }
    }
    int T;
    scanf("%d", &T);
    while (T--) {
        solve();
    }
    return 0;
}

2023/7/23 00:53
加载中...