結果
問題 | No.1741 Arrays and XOR Procedure |
ユーザー |
![]() |
提出日時 | 2022-01-21 10:24:55 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 358 ms / 2,000 ms |
コード長 | 1,299 bytes |
コンパイル時間 | 162 ms |
コンパイル使用メモリ | 82,372 KB |
実行使用メモリ | 120,212 KB |
最終ジャッジ日時 | 2024-11-25 04:10:37 |
合計ジャッジ時間 | 10,727 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
N = 10**6mod = 998244353fac = [1]*(N+1)finv = [1]*(N+1)for i in range(N):fac[i+1] = fac[i] * (i+1) % modfinv[-1] = pow(fac[-1], mod-2, mod)for i in reversed(range(N)):finv[i] = finv[i+1] * (i+1) % moddef cmb1(n, r, mod):if r <0 or r > n:return 0r = min(r, n-r)return fac[n] * finv[r] * finv[n-r] % modp = 2C = [[0]*(p+1) for i in range(p+1)] #C[n][k] > nCkfor i in range(p+1):for j in range(i+1):if j == 0 or j == i:C[i][j] = 1else:C[i][j] = C[i-1][j-1]+C[i-1][j]def cmb2(n, k, p):ret = 1while n > 0:ni = n%pki = k%pret *= C[ni][ki]ret %= pn //= pk //= preturn retn = int(input())B = list(map(int, input().split()))x = 0o = 0e = 0for i, b in enumerate(B):if b != -1:if cmb2(n-1, i, 2)%2 == 1:x ^= belse:if cmb2(n-1, i, 2)%2 == 1:o += 1else:e += 1ans = 0if x == 0:for k in range(o+1):if k%2 == 0:continueans += cmb1(o, k, mod)*pow(2, e, mod)ans %= modelse:for k in range(o+1):if k%2 == 1:continueans += cmb1(o, k, mod)*pow(2, e, mod)ans %= modprint(ans)