Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

groot avatar groot 3 Точки

Loops part 2 - 05. Coins

Здравейте, всички! Стигам 90/100 на тази задача и ми гърми за time limit. 

Ето моя код:

coins = 0

change = float(input())

changeToSt = change * 100

 

while changeToSt > 0:

    if changeToSt >= 200:

        changeToSt -= 200

        coins += 1

    elif 200 > changeToSt >= 100:

        changeToSt -= 100

        coins += 1

    elif 100 > changeToSt >= 50:

        changeToSt -= 50

        coins += 1

    elif 50 > changeToSt >= 20:

        changeToSt -= 20

        coins += 1

    elif 20 > changeToSt >= 10:

        changeToSt -= 10

        coins += 1

    elif 10 > changeToSt >= 5:

        changeToSt -= 5

        coins += 1

    elif 5 > changeToSt >= 2:

        changeToSt -= 2

        coins += 1

    elif 2 > changeToSt >= 1:

        changeToSt -= 1

        coins += 1

 

print(coins)

Тагове:
0
DeveloperEnthusiast avatar DeveloperEnthusiast 303 Точки
Best Answer

Здравей,

changeToSt = math.floor(changeToSt)

това го сложи накрая на цикъла

п.с. в Python се пишe със snake case - change_to_st

0
groot avatar groot 3 Точки

Благодаря. Може ли да ми обясниш защо това работи?

0
DeveloperEnthusiast avatar DeveloperEnthusiast 303 Точки

За да изрежеш някои отклонения, които се получават във float... виж това - https://stackoverflow.com/questions/7374836/float-deviation-in-python-list - не е нужно да го разбираш цялото. От нулевите тестове се получава нещо такова като въведеш 0.56... Пусни с дебъг и виж.

0
MiroslavSV avatar MiroslavSV 0 Точки

Здравейте,

С моят код достигам до 60/100, а пробвах доста варианти и не виждам никъде грешка при отговорите.

Моля помогнете за да си открия грешката в кода.

resto=float(input())
broimoneti=0
while resto>=2:
    resto-=2
    broimoneti+=1
while 1<=resto<2:
    resto-=1
    broimoneti+=1
while 0.50<=resto<1:
    resto-=0.50
    broimoneti+=1
while 0.20<=resto<0.50:
    resto-=0.20
    broimoneti+=1
while 0.10<=resto<0.20:
    resto-=0.10
    broimoneti+=1
while 0.05<=resto<0.10:
    resto-=0.05
    broimoneti+=1
while 0.02<=resto<0.05:
    resto-=0.02
    broimoneti+=1
while 0<resto<0.02:
    resto=0
    broimoneti+=1
print(broimoneti)
-1
DejanDimeski avatar DejanDimeski 0 Точки

Бая въртях да търся начин да автоматизирам стойностите на монетите но си е голяма играчка. Реално може да се постигне по извъртен начин с X // 2,като проблемно са стойностите 0.2 и 0.02 та се отказах и го реших по следният начин без нужда от било какви цикли:
 

change = float(input())
coins = 0
rest = 0
# Coins: 2 BGB, 1 BGN, 0.5 BGN, 0.2 BGN, 0.1 BGN, 0.05 BGN, 0.02 BGN, 0.01 BGN
rest = change // 2
if rest > 0:
    coins += rest
    change -= rest * 2
    change = round(change, 2)
rest = change // 1
if rest > 0:
    coins += rest
    change -= rest
    change = round(change, 2)
rest = change // 0.5
if rest > 0:
    coins += rest
    change -= rest * 0.5
    change = round(change, 2)
rest = change // 0.2
if rest > 0:
    coins += rest
    change -= rest * 0.2
    change = round(change, 2)
rest = change // 0.1
if rest > 0:
    coins += rest
    change -= rest * 0.1
    change = round(change, 2)
rest = change // 0.05
if rest > 0:
    coins += rest
    change -= rest * 0.05
    change = round(change, 2)
rest = change // 0.02
if rest > 0:
    coins += rest
    change -= rest * 0.02
    change = round(change, 2)
rest = change // 0.01
if rest > 0:
    coins += rest
    change -= rest * 0.01
    change = round(change, 2)
print(int(coins))
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.