--- 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 строк.
При желании можно использовать как стресс-тест ЦПУ
--- 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 строк.
При желании можно использовать как стресс-тест ЦПУ
& - Конъюнкция, истина только тогда, когда и А и Б истины, т.е 1
v - Дизъюнкция, истина, если хоть одна из переменных истина. Т.е ложно оно бывает только когда обе ложные (0)
И вот теперь тупо смотришь в таблицу.
B&C
Смотрим на первую строку. Они обе 0, т.е ложные, значит в столбце B&C в первой строке тоже 0. Дальше,вторая строка. Теперь B - 0, C - 1, тоже пишем 0, т.к истинно только одно. И т.д. В итоге истина только в 4 и 8 строке. Остальное нули.
Потом у тебя идёт A v (B&C). Смотришь на столбец А, и столбец, который ты только что заполнил. Аналогично. Т.е тут будет, что до 4 строки - ложь, а после и до конца - истина. т.к хоть одна истина будет.
Тоже самое и с другими.