😽
[ABC257E] Addition and Multiplication 2 を Pythonで解く
考え方
DPの問題かと思ったら、貪欲法でした。
考え方のポイントとしては、
(1) 操作を行うと
(2) 選んだ数字が一の位に入るので、できるだけ大きな数字を選んだ方が良い。
桁が大きい方が数字は大きくなるので、(1)が(2)よりも優先される。
実装メモ
from functools import reduce
N = int(input())
C = list(map(int,input().split()))
rC = list(reversed(C))
MinC = reduce(min,C)
k = 9 - rC.index(MinC)
q = N // MinC
r = N % MinC
貪欲に
ans = ""
i = 9
while r > 0 and i > k:
if C[i-1] - MinC <= r:
r -= C[i-1] - MinC
ans = ans + str(i)
q -= 1
else:
i -= 1
ans = ans + str(k)*q
print(ans)
Discussion