結果
| 問題 |
No.3316 Make 81181819 with only 0,1,or 8
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-31 23:51:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,999 bytes |
| コンパイル時間 | 371 ms |
| コンパイル使用メモリ | 82,836 KB |
| 実行使用メモリ | 288,492 KB |
| 最終ジャッジ日時 | 2025-10-31 23:52:10 |
| 合計ジャッジ時間 | 28,690 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | WA * 3 TLE * 1 -- * 18 |
ソースコード
def main():
T = int(input())
array = set()
for bit in range(1, 3 ** 8):
ar = []
for _ in range(8):
if bit % 3 == 1:
ar.append(1)
elif bit % 3 == 2:
ar.append(8)
else:
ar.append(0)
bit //= 3
ar = "".join(map(str, ar))
array.add(int(ar))
array = list(array)
array.sort(reverse=True)
dp = {0:0}
prev = {0:[]}
for _ in range(2):
new_dp = dp.copy()
for key, value in dp.items():
for a in array:
new_key = a + key
if new_key <= 81181819:
if new_key not in new_dp:
new_dp[new_key] = value + 1
if key == 0:
prev[new_key] = [a]
else:
prev[new_key] = [a, key]
dp = new_dp
for _ in range(T):
N = int(input())
x = 81181819 - N
if x in dp:
print(dp[x])
for a in prev[x]:
print(a)
else:
min_answer = float("inf")
min_array = []
for i in range(8):
ans = i
array = [1] * i
y = x - i
if y < 0:
break
for key, value in dp.items():
z = y - key
if z < 0:
continue
if z in dp:
ans0 = ans + value + dp[z]
if min_answer > ans0:
min_answer = ans0
min_array = array.copy()
min_array.extend(prev[z])
min_array.extend(prev[key])
print(min_answer)
for a in min_array:
print(a)
if __name__ == "__main__":
main()
# main2()