n = int(input())
kup = 0
while n != 0:
if n-500 >= 0:
n-=500
kup += 1
while n != 0:
if n-500 >= 0:
kup += 1
else: break
elif n-200 >= 0:
kup += 1
n-= 200
while n != 0:
if n-200 >= 0:
kup += 1
n-=200
else: break
elif n-100 >= 0:
kup += 1
n-= 100
while n != 0:
if n-100 == 0:
kup += 1
n-=100
else: break
elif n-50 >= 0:
kup += 1
n-= 50
while n != 0:
if n-50 >= 0:
kup += 1
n-=50
else: break
elif n-20 == 0:
kup += 1
n-= 20
while n != 0:
if n-20 >= 0:
kup += 1
n-=20
else: break
elif n-10 == 0:
kup += 1
n-= 10
while n != 0:
if n-10 >= 0:
kup += 1
n-=10
else: break
elif n-5 == 0:
kup += 1
n-= 5
while n != 0:
if n-5 >= 0:
kup += 1
n-=5
else: break
elif n-2 == 0:
kup += 1
n-= 2
while n != 0:
if n-2 >= 0:
kup += 1
n-=2
else: break
elif n-1 == 0:
kup += 1
n-= 1
while n != 0:
if n-1 >= 0:
kup += 1
n-=1
else: break
print(kup)
Возможно не оптимизирован, она считает сколько минимально купюр надо чтобы было столько денег, при некоторых значениях просто ничего не выводит(думаю не выходит из цикла). Что делать? Как решить?