結果
| 問題 |
No.2397 ω冪
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 15:26:02 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,390 bytes |
| コンパイル時間 | 264 ms |
| コンパイル使用メモリ | 82,904 KB |
| 実行使用メモリ | 273,864 KB |
| 最終ジャッジ日時 | 2025-04-16 15:27:53 |
| 合計ジャッジ時間 | 5,566 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 WA * 5 TLE * 1 -- * 4 |
ソースコード
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):
if s == '0':
return '0'
rev = list(s[::-1])
i = 0
while i < len(rev):
if rev[i] == '1':
rev[i] = '0'
break
else:
rev[i] = '1'
i += 1
res = ''.join(rev[::-1]).lstrip('0')
return res if res else '0'
def divide_by_two(s):
if s == '0':
return '0'
return s[:-1] if len(s) > 1 else '0'
def decompose(s):
b_list = []
while s != '0':
b = count_trailing_zeros(s)
b_list.append(b)
if b > 0:
s = s[:-b]
if not s:
s = '0'
break
s = subtract_one(s)
if s == '0':
break
s = divide_by_two(s)
return b_list
def compare_lists(a, b):
for i in range(min(len(a), len(b))):
if a[i] < b[i]:
return True
elif a[i] > b[i]:
return False
return len(a) < len(b)
n_str = input().strip()
m_str = input().strip()
if not n_str:
n_str = '0'
if not m_str:
m_str = '0'
n_list = decompose(n_str)
m_list = decompose(m_str)
n_reversed = n_list[::-1]
m_reversed = m_list[::-1]
if compare_lists(n_reversed, m_reversed):
print("Yes")
else:
print("No")
lam6er