結果
問題 | No.2724 Coprime Game 1 |
ユーザー | hirakuuuu |
提出日時 | 2024-04-12 22:07:48 |
言語 | C++23 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,691 bytes |
コンパイル時間 | 2,762 ms |
コンパイル使用メモリ | 247,408 KB |
実行使用メモリ | 16,404 KB |
最終ジャッジ日時 | 2024-10-02 23:20:45 |
合計ジャッジ時間 | 4,432 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 38 ms
15,940 KB |
testcase_01 | AC | 37 ms
16,276 KB |
testcase_02 | WA | - |
testcase_03 | AC | 207 ms
16,148 KB |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, a, n) for(int i = a; i < n; i++) #define rrep(i, a, n) for(int i = a; i >= n; i--) #define inr(l, x, r) (l <= x && x < r) #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> // constexpr ll MOD = 1000000007; constexpr ll MOD = 998244353; constexpr int IINF = 1001001001; constexpr ll INF = 9e18; template<class t,class u> void chmax(t&a,u b){if(a<b)a=b;} template<class t,class u> void chmin(t&a,u b){if(b<a)a=b;} ll power(ll a, ll b, ll m=MOD){ ll res = 1; while(b > 0){ if(b%2 == 1) res = res*a%m; a = a*a%m; b /= 2; } return res; } // 0ならば素数, 0でないなら最小の素因数 vector<int> erat(3000005); void init_e(){ rep(i, 2, sqrt(3000005)+1){ if(erat[i] == 0){ for(ll j = i*i; j < 3000005; j += i){ if(erat[j] == 0) erat[j] = i; } } } } int main(){ int t; cin >> t; init_e(); vector<int> p; rep(i, 2, 3000005){ if(erat[i] == 0) p.push_back(i); } // cout << p.size() << endl; while(t--){ int n; cin >> n; int prime = erat[n]; if(prime == 0){ cout << "P" << endl; continue; } // n以下の素数かつprimeをかけると nを超えるものを数えたい auto r = upper_bound(p.begin(), p.end(), n); auto l = upper_bound(p.begin(), p.end(), n/prime); // cout << r-l << ' ' << n-2-(r-l) << endl; int cnt = n-2-(r-l); if(cnt%2 == 1) cout << "K" << endl; else cout << "P" << endl; } return 0; }