結果
| 問題 |
No.822 Bitwise AND
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 23:06:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,821 bytes |
| コンパイル時間 | 434 ms |
| コンパイル使用メモリ | 82,064 KB |
| 実行使用メモリ | 83,168 KB |
| 最終ジャッジ日時 | 2025-04-15 23:08:38 |
| 合計ジャッジ時間 | 4,319 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 WA * 7 TLE * 1 -- * 7 |
ソースコード
def main():
import sys
N, K = map(int, sys.stdin.readline().split())
if N == 0:
if K == 0:
print(1)
else:
print("INF")
return
# Generate free bits (positions where N has 0)
free_bits = []
for bit in range(30): # Check up to 30 bits
if (N & (1 << bit)) == 0:
free_bits.append(bit)
# Check for INF condition
INF = False
for i in range(len(free_bits)):
for j in range(i + 1, len(free_bits)):
p = free_bits[i]
q = free_bits[j]
if (1 << q) - (1 << p) <= K:
INF = True
break
if INF:
break
if INF:
print("INF")
return
# Count valid pairs
count = 0
# Generate all possible a's
len_free = len(free_bits)
for a_mask in range(0, 1 << len_free):
a = 0
for i in range(len_free):
if a_mask & (1 << i):
a_bit = free_bits[i]
a |= (1 << a_bit)
if (a & N) != 0:
continue
# Compute remaining bits (free_bits not in a)
remaining_bits = []
for bit in free_bits:
if (a & (1 << bit)) == 0:
remaining_bits.append(bit)
len_remaining = len(remaining_bits)
# Generate all possible b's from remaining_bits
for b_mask in range(0, 1 << len_remaining):
b = 0
for i in range(len_remaining):
if b_mask & (1 << i):
b_bit = remaining_bits[i]
b |= (1 << b_bit)
if a > b:
continue
if b - a > K:
continue
count += 1
print(count)
if __name__ == "__main__":
main()
lam6er