結果

問題 No.1665 quotient replace
ユーザー kept1994kept1994
提出日時 2021-09-04 02:35:59
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 844 ms / 3,000 ms
コード長 1,734 bytes
コンパイル時間 460 ms
コンパイル使用メモリ 82,096 KB
実行使用メモリ 263,636 KB
最終ジャッジ日時 2024-12-16 00:47:22
合計ジャッジ時間 15,157 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 91 ms
85,920 KB
testcase_01 AC 103 ms
86,768 KB
testcase_02 AC 97 ms
86,544 KB
testcase_03 AC 110 ms
91,612 KB
testcase_04 AC 111 ms
91,176 KB
testcase_05 AC 99 ms
86,672 KB
testcase_06 AC 134 ms
96,132 KB
testcase_07 AC 118 ms
92,924 KB
testcase_08 AC 132 ms
96,104 KB
testcase_09 AC 150 ms
98,688 KB
testcase_10 AC 359 ms
142,700 KB
testcase_11 AC 582 ms
184,748 KB
testcase_12 AC 185 ms
108,112 KB
testcase_13 AC 844 ms
262,932 KB
testcase_14 AC 838 ms
263,060 KB
testcase_15 AC 805 ms
263,040 KB
testcase_16 AC 746 ms
263,020 KB
testcase_17 AC 720 ms
263,636 KB
testcase_18 AC 88 ms
86,796 KB
testcase_19 AC 91 ms
86,136 KB
testcase_20 AC 93 ms
86,660 KB
testcase_21 AC 91 ms
87,160 KB
testcase_22 AC 96 ms
86,544 KB
testcase_23 AC 94 ms
87,436 KB
testcase_24 AC 98 ms
86,304 KB
testcase_25 AC 89 ms
86,620 KB
testcase_26 AC 96 ms
92,052 KB
testcase_27 AC 116 ms
96,500 KB
testcase_28 AC 122 ms
99,392 KB
testcase_29 AC 135 ms
105,652 KB
testcase_30 AC 330 ms
179,432 KB
testcase_31 AC 409 ms
198,000 KB
testcase_32 AC 507 ms
182,956 KB
testcase_33 AC 286 ms
126,984 KB
testcase_34 AC 470 ms
191,432 KB
testcase_35 AC 444 ms
181,288 KB
testcase_36 AC 469 ms
191,436 KB
testcase_37 AC 443 ms
179,756 KB
testcase_38 AC 504 ms
202,936 KB
testcase_39 AC 378 ms
163,524 KB
testcase_40 AC 382 ms
163,396 KB
testcase_41 AC 393 ms
163,576 KB
testcase_42 AC 99 ms
87,960 KB
testcase_43 AC 101 ms
86,332 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env python3
import sys

class Eratosthenes():
    def __init__(self, N: int) -> None:
        self.isPrime = [True] * (N + 1) # 数iが素数かどうかのフラグ
        self.isPrime[0] = False
        self.isPrime[1] = False
        self.minfactor = [0] * (N + 1) # 数iの最小の素因数
        self.minfactor[1] = 1
        self.primes = []    # 数Nまでの素数のリスト
        for p in range(2, N + 1):  # p : 判定対象の数
            if not self.isPrime[p]:
                continue
            self.minfactor[p] = p
            self.primes.append(p)
            # pが素数のためそれ以降に出現するpの倍数を除外する。
            # なお、ループはp始まりでも良いが、p * _ のかける側はすでに同じ処理で弾かれているはずのため無駄。
            for i in range(p * p, N + 1, p):
                if self.minfactor[i] == 0:
                    self.minfactor[i] = p
                self.isPrime[i] = False
        return
    
    def getPrimes(self):
        return self.primes
    
    def factorize(self, n: int) -> list:
        res = [] # (p, exp)
        while n > 1:
            p = self.minfactor[n]
            exp = 0
            while self.minfactor[n] == p:
                n //= p
                exp += 1
            res.append((p, exp))
        return res

def main():
    N = int(input())
    A = list(map(int, input().split()))
    er = Eratosthenes(10 ** 6 + 1)
    pf = []
    for aa in A:
        s = 0
        for _, exp in er.factorize(aa):
            s += exp
        pf.append(s)
    ans = 0
    for i in pf:
        ans ^= i
    print("white" if ans else "black")
    return

if __name__ == '__main__':
    main()
0