В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
BettaPi2003
BettaPi2003
14.11.2022 02:23 •  Информатика

Язык программирования - Python.

Имеется неограниченное количество монет в 1, 2, 5, 10 рублей. Определите, сколькими можно выдать сдачу в n рублей. Например, 5 рублей можно выдать четырьмя : 5=2+2+1=2+1+1+1=1+1+1+1+1.

Входные данные
Программа получает на вход натуральное число n, не превышающее 106.

Выходные данные
Выведите ответ на задачу. Примечание Правильное решение задачи можно написать, используя всего один цикл while. Примеры
Ввод
2
100000
Вывод
2
1667116705001

Ответ:
kirilnavrotskykiril
kirilnavrotskykiril
12.03.2021 22:20

s=int(input())

ans = 0

s5=0

while s5<=s:

    s1=s-s5

    ans+=(s1//2+1)*(s5//10+1)

    s5+=5

print(ans)

0,0(0 оценок)
Ответ:
Aleijv
Aleijv
12.03.2021 22:20

--- Python 3.8.3 ---

n = int(input('n: \n'))

counter = 0

for coin1 in range(0, n+ 1):

  for coin2 in range(0, (n // 2) + 1):

      for coin5 in range(0, (n // 5) + 1):

          for coin10 in range(0, (n // 10) + 1):

              if coin1 * 1 + coin2 * 2 + coin5 * 5 + coin10 * 10 == n: counter += 1

print(counter)

для n в пределах 100-200 считает вроде правильно, и достаточно быстро. Что до больших значений n, мне не хватило терпения. Ненормально это, успеть попить чаю в ожидании конца работы программы в 8 строк.

При желании можно использовать как стресс-тест ЦПУ

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?