結果
| 問題 |
No.2397 ω冪
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 19:19:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,676 bytes |
| コンパイル時間 | 186 ms |
| コンパイル使用メモリ | 82,900 KB |
| 実行使用メモリ | 73,504 KB |
| 最終ジャッジ日時 | 2025-06-12 19:19:41 |
| 合計ジャッジ時間 | 3,194 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 WA * 11 |
ソースコード
import sys
sys.setrecursionlimit(1 << 25)
def count_trailing_zeros(s):
count = 0
for c in reversed(s):
if c == '0':
count += 1
else:
break
return count
def subtract_one(s):
s_list = list(s)
i = len(s_list) - 1
while i >= 0 and s_list[i] == '0':
s_list[i] = '1'
i -= 1
if i >= 0:
s_list[i] = '0'
new_s = ''.join(s_list).lstrip('0')
return new_s if new_s else '0'
def divide_by_two(s):
if s == '0':
return '0'
return s[:-1] if len(s) > 1 else '0'
def compare(n_bin, m_bin):
n = n_bin.lstrip('0') or '0'
m = m_bin.lstrip('0') or '0'
if n == '0' and m == '0':
return 0
if n == '0':
return -1
if m == '0':
return 1
# Decompose n
b_n = count_trailing_zeros(n)
rest_n = n[:-b_n] if b_n > 0 else n
if not rest_n:
a_n = '0'
else:
rest_minus1 = subtract_one(rest_n)
a_n = divide_by_two(rest_minus1)
# Decompose m
b_m = count_trailing_zeros(m)
rest_m = m[:-b_m] if b_m > 0 else m
if not rest_m:
a_m = '0'
else:
rest_minus1_m = subtract_one(rest_m)
a_m = divide_by_two(rest_minus1_m)
# Compare b_n and b_m
if b_n == 0:
b_n_bin = '0'
else:
b_n_bin = bin(b_n)[2:]
if b_m == 0:
b_m_bin = '0'
else:
b_m_bin = bin(b_m)[2:]
cmp_b = compare(b_n_bin, b_m_bin)
if cmp_b != 0:
return cmp_b
# Compare a_n and a_m
return compare(a_n, a_m)
n = input().strip()
m = input().strip()
result = compare(n, m)
print("Yes" if result == -1 else "No")
gew1fw