EugeneEugene007
15.12.2020 15:39

Вычислите значение логического выражения при следующих значениях логических величин А, Б и С А-истина, Б-ложь, С-Ложь
1)А или В
2)А и В
3)В или С

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
026k
26.04.2022 03:34

--- 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 оценок)
Ответ:
dzhmulin
22.07.2021 19:23

Вы допустили ошибку на строке 7:

for j in range(1, N):

   ...

Знакомая формулировка задачи, ЕГЭ-27. Вы пошли по пути наименьшего сопротивления, и решили перебрать все возможные пары элементов. Но в таком случае стоит учитывать, что для любого ряда входных данных, если x1 и x2 образуют пару, то эти же числа в обратном порядке учитывать не надо (При вашем переборе программа проверяла и пару x1-x2 и x2-x1, и считала их уникальными, что и приводило к ошибке)

Что бы перебрать все уникальные пары без повторений, вам следует немного изменить параметры вложенного for:

for i in range(N-1):

   for j in range(i, N):

       

Таким образом, вы точно так же учтете все возможные комбинации элементов, но сможете избежать повторений.

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