結果
問題 | No.1665 quotient replace |
ユーザー |
![]() |
提出日時 | 2021-09-03 21:43:57 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 253 ms / 3,000 ms |
コード長 | 2,646 bytes |
コンパイル時間 | 2,482 ms |
コンパイル使用メモリ | 197,420 KB |
最終ジャッジ日時 | 2025-01-24 05:17:23 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for(int i=0;i<(int)(n);i++)#define FOR(i,n,m) for(int i=(int)(n); i<=(int)(m); i++)#define RFOR(i,n,m) for(int i=(int)(n); i>=(int)(m); i--)#define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++)#define RITR(x,c) for(__typeof(c.rbegin()) x=c.rbegin();x!=c.rend();x++)#define setp(n) fixed << setprecision(n)template<class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }template<class T> bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; }#define ll long long#define vll vector<ll>#define vi vector<int>#define pll pair<ll,ll>#define pi pair<int,int>#define all(a) (a.begin()),(a.end())#define rall(a) (a.rbegin()),(a.rend())#define fi first#define se second#define pb push_back#define ins insert#define debug(a) cerr<<(a)<<endl#define dbrep(a,n) rep(_i,n) cerr<<(a[_i])<<" "; cerr<<endl#define dbrep2(a,n,m) rep(_i,n){rep(_j,m) cerr<<(a[_i][_j])<<" "; cerr<<endl;}using namespace std;template<class A, class B>ostream &operator<<(ostream &os, const pair<A,B> &p){return os<<"("<<p.fi<<","<<p.se<<")";}template<class A, class B>istream &operator>>(istream &is, pair<A,B> &p){return is>>p.fi>>p.se;}template<class T>vector<T> make_vec(size_t a){return vector<T>(a);}template<class T, class... Ts>auto make_vec(size_t a, Ts... ts){return vector<decltype(make_vec<T>(ts...))>(a, make_vec<T>(ts...));}//-------------------------------------------------//--Sieve of Eratosthenes//-------------------------------------------------class Sieve{private:vector<int> minf;public:Sieve(int n):minf(n+1){iota(minf.begin(),minf.end(),0);for(int i=2; i*i<=n; i++){if (minf[i]!=i) continue;for(int j=i*2; j<=n; j+=i){if (minf[j]==j) minf[j] = i;}}}using P = pair<int,int>;vector<P> factor(int N){vector<P> ret;while(N>1){int f = minf[N];int cnt = 0;while(minf[N]==f){N/=f;cnt++;}ret.emplace_back(f,cnt);}return ret;}bool operator[](int x){return minf[x]==x;}};//-------------------------------------------------int main(void){cin.tie(0);ios::sync_with_stdio(false);int N; cin>>N;vi a(N);rep(i,N) cin>>a[i];Sieve sieve(1000000);int ans=0;rep(i,N){auto factors = sieve.factor(a[i]);int cnt=0;for(auto f:factors){cnt+=f.second;}ans^=cnt;}if (ans==0) cout<<"black\n";else cout<<"white\n";return 0;}