結果
問題 | No.1665 quotient replace |
ユーザー |
![]() |
提出日時 | 2021-08-09 23:05:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 506 ms / 3,000 ms |
コード長 | 1,191 bytes |
コンパイル時間 | 1,955 ms |
コンパイル使用メモリ | 199,428 KB |
最終ジャッジ日時 | 2025-01-23 17:18:20 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <bits/stdc++.h>using namespace std;struct osa_k {private:std::vector<int> spf, pr;public:osa_k() = default;osa_k(int MAX) : spf(MAX + 1) {for(int i = 2; i <= MAX; i++) {if(spf[i] == 0) {spf[i] = i;pr.push_back(i);}for(int j = 0; j < pr.size() and pr[j] <= spf[i] and i * pr[j] <= MAX; j++)spf[i * pr[j]] = pr[j];}}std::vector<std::pair<int, int>> PF(int n) {std::vector<std::pair<int, int>> divisor;if(n == 1) return divisor;int before = spf[n], cnt = 0;while(n > 1) {if(spf[n] == before) {cnt++;n /= spf[n];} else {divisor.emplace_back(before, cnt);before = spf[n];cnt = 1;n /= spf[n];}}divisor.emplace_back(before, cnt);return divisor;}int smallestprimefactor(const int n) const {return spf[n];}bool isPrime(const int n) const {return n == spf[n];}};const int m = 1000000;osa_k pf(m);int main() {int n;cin >> n;int fold = 0;while(n--) {int a;cin >> a;if(a == 1) continue;auto vec = pf.PF(a);int tmp = 0;for(auto [val, cnt] : vec) tmp += cnt;fold ^= tmp;}cout << (fold ? "white" : "black") << '\n';return 0;}