結果
問題 | No.1958 Bit Game |
ユーザー |
![]() |
提出日時 | 2022-05-27 22:17:07 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 656 ms / 2,000 ms |
コード長 | 2,067 bytes |
コンパイル時間 | 172 ms |
コンパイル使用メモリ | 82,380 KB |
実行使用メモリ | 158,796 KB |
最終ジャッジ日時 | 2024-09-20 16:02:34 |
合計ジャッジ時間 | 17,204 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
from collections import Counter,defaultdict,dequefrom heapq import heappop,heappush,heapifyfrom bisect import bisect_left,bisect_rightimport sys,math,itertools,pprint,fractionssys.setrecursionlimit(10**8)mod = 10**9+7INF = float('inf')def inp(): return int(sys.stdin.readline())def inpl(): return list(map(int, sys.stdin.readline().split()))def inpl_1(): return list(map(lambda x:int(x)-1, sys.stdin.readline().split()))def err(x): print(x); exit()class Combination:"""comb = Combination(1000000)print(comb(5, 3)) # 10"""def __init__(self, n_max, mod=10**9+7):self.mod = modself.modinv = self.make_modinv_list(n_max)self.fac, self.facinv = self.make_factorial_list(n_max)def __call__(self, n, r):return self.fac[n] * self.facinv[r] % self.mod * self.facinv[n-r] % self.moddef make_factorial_list(self, n):fac = [1]facinv = [1]for i in range(1, n+1):fac.append(fac[i-1] * i % self.mod)facinv.append(facinv[i-1] * self.modinv[i] % self.mod)return fac, facinvdef make_modinv_list(self, n):# 0からnまでのmod逆元のリストを返す O(n)modinv = [0] * (n+1)modinv[1] = 1for i in range(2, n+1):modinv[i] = self.mod - self.mod//i * modinv[self.mod%i] % self.modreturn modinvmod = 998244353m = 18n,x,y = inpl()a = inpl()b = inpl()res = 0p = [1]for i in range(n):p.append(p[-1]*x*y%mod)for d in range(m):cnta = cntb = 0ans = 0for aa in a:if (aa>>d)%2:cnta += 1for bb in b:if (bb>>d)%2:cntb += 1if cnta == 0 or cntb == 0:continuezero = pow(x-cnta,n-1,mod)one = pow(cntb,n,mod)inv_x_cnta = pow(x-cnta,mod-2,mod)inv_cntb = pow(cntb,mod-2,mod)for i in range(n):ans += p[i]*cnta%mod*one%mod*zeroans %= modzero = zero*inv_x_cnta%modone = one*inv_cntb%modres += ans*pow(2,d,mod)res %= modprint(res)