結果
| 問題 |
No.3157 Nabeatsu
|
| コンテスト | |
| ユーザー |
わん
|
| 提出日時 | 2025-10-22 01:15:44 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 130 ms / 2,000 ms |
| コード長 | 756 bytes |
| コンパイル時間 | 474 ms |
| コンパイル使用メモリ | 82,752 KB |
| 実行使用メモリ | 124,364 KB |
| 最終ジャッジ日時 | 2025-10-22 01:15:53 |
| 合計ジャッジ時間 | 7,571 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 45 |
ソースコード
N = input()
if len(N) < 4:
N = int(N)
for i in range(N+1)[::-1]:
if '3' not in str(i) and i%3!=0:
print(i)
exit()
ln = list(N)
def f(ln):
L = len(ln)
sm = 0
for i in range(L):
if ln[i] == '3':
sm += 2 + 9*(L-i-1)
ln = ln[:i]+['2']+['9']*(L-i-1)
break
else:
sm += int(ln[i])
return ln, sm
ln, sm = f(ln)
m = len(ln)
while sm%3==0:
i = len(ln)-1
if ln[i] != '0':
ln[i] = str(int(ln[i])-1)
sm -= 1
if ln[i] == '3':
ln, sm = f(ln)
else:
for j in range(m-1, -1, -1):
if ln[j] == '0':
ln[j] = '9'
sm += 9
else:
ln[j] = str(int(ln[j])-1)
sm -= 1
if ln[j] == '3':
ln, sm = f(ln)
break
print(''.join(ln))
わん