結果
問題 | No.1741 Arrays and XOR Procedure |
ユーザー | puzneko |
提出日時 | 2021-11-25 00:11:29 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 108 ms / 2,000 ms |
コード長 | 990 bytes |
コンパイル時間 | 138 ms |
コンパイル使用メモリ | 82,160 KB |
実行使用メモリ | 112,512 KB |
最終ジャッジ日時 | 2024-06-27 09:50:13 |
合計ジャッジ時間 | 4,887 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
from sys import stdin n, *b = map(int, stdin.read().split()) p = 998244353 def powmod(n,pow,mod): val = 1 while pow > 0: if pow & 1: val = (val * n) % mod pow = pow >> 1 n = (n * n) % mod return val numof2 = [0 for i in range(n+1)] val = 2 while val <= n: kari = val while kari <= n: numof2[kari] += 1 kari += val val = val * 2 kaijo = [0 for i in range(n+1)] for i in range(1,n+1): kaijo[i] = kaijo[i-1] + numof2[i] nowans = 0 oddnum = 0 evennum = 0 for i in range(n): kari = kaijo[n-1] - kaijo[i] - kaijo[n-1-i] if kari >= 1: if b[i] == -1: evennum += 1 else: if b[i] == -1: oddnum += 1 else: nowans = nowans ^ b[i] if oddnum == 0: if nowans == 0: print("{}".format(0)) else: ans = powmod(2,evennum,p) print("{}".format(ans)) else: ans = powmod(2,evennum+oddnum-1,p) print("{}".format(ans))