Тема 8. Количество информации и комбинаторика

8.04 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела количество информации и комбинаторика
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 81#46832Максимум баллов за задание: 1

Напишите программу, которая выводит с новой строки все возможные перестановки длиной 2 в алфавите из букв: A, B, C. В ответе запишите вывод программы через пробел.

Показать ответ и решение
from itertools import permutations

symbols = [’A’, ’B’, ’C’]
for x in permutations(symbols, 2):
    print(*x, sep=’’)

Ответ: AB AC BA BC CA CB

Ошибка.
Попробуйте повторить позже

Задача 82#46833Максимум баллов за задание: 1

Напишите программу, которая находит количество всех возможных перестановок длиной 3 в алфавите из символов: A, B, D, E. В ответе запишите вывод программы.

Показать ответ и решение
from itertools import permutations

symbols = [’A’, ’B’, ’D’, ’E’]
print(len(list(permutations(symbols, 3))))

Ответ: 24

Ошибка.
Попробуйте повторить позже

Задача 83#46834Максимум баллов за задание: 1

Напишите программу, которая выводит все двузначные числа в промежутке [10; 30]. В ответе запишите вывод программы через пробел.

Показать ответ и решение
from itertools import product
digits = [’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’,
          ’7’, ’8’, ’9’]

for x in product(digits, repeat=2):
    num = int(’’.join(x))
    if 10 <= num <= 30:
        print(num, end=’ ’)

Ответ: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Ошибка.
Попробуйте повторить позже

Задача 84#46835Максимум баллов за задание: 1

Напишите программу, которая выводит количество всех трёхзначных чисел в промежутке [156; 189].

Показать ответ и решение
from itertools import product
digits = [’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’,
          ’7’, ’8’, ’9’]

for x in product(digits, repeat=3):
    num = int(’’.join(x))
    if 156 <= num <= 189:
        print(num, end=’ ’)

Ответ: 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

Ошибка.
Попробуйте повторить позже

Задача 85#46836Максимум баллов за задание: 1

Напишите программу, которая выводит с новой строки все возможные наборы логической функции, зависящей от 3 переменных.

Показать ответ и решение
from itertools import product

for x in product([0, 1], repeat=3):
    print(*x)

Ответ: % слишком большой ответ -

Ошибка.
Попробуйте повторить позже

Задача 86#46838Максимум баллов за задание: 1

Дан список команд на футбольный турнир: "Метеор "Ракета "Пушка "Искра". Известно, что команды Метеор и Пушка не могут играть между собой, как и "Ракета"и "Искра"между собой. Напишите программу, которая выводит с новой строки все возможные игры команд между собой.

Показать ответ и решение
from itertools import combinations

teams = ["Метеор", "Ракета", "Пушка", "Искра"]

for x in combinations(teams, 2):
    if not ("Метеор" in x and "Пушка" in x
            or "Ракета" in x and "Искра" in x):
        print(*x)

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 87#46839Максимум баллов за задание: 1

Три игральных шестигранных кубика бросили на стол. Напишите программу которая выводит всевозможные комбинации в формате: "К1: 5, К2: 6, К3: 1".

Показать ответ и решение
from itertools import product

for x in product(range(1, 7), repeat=3):
    print(f"K1: {x[0]}, K2: {x[1]}, K3: {x[2]}")

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 88#46840Максимум баллов за задание: 1

В группе N человек. Напишите программу, которая выводит все возможные разные подгруппы, которые можно образовать, при условии, что в подгруппу входит не менее M человек? (M < N)

Показать ответ и решение
from itertools import combinations
n = int(input())
m = int(input())
for i in range(m, n + 1):
    for x in combinations(range(n), i):
        print(*x)

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 89#46841Максимум баллов за задание: 1

Напишите программу, которая выводит все возможные пятизначные числа (без повторения цифр), которые можно составить из цифр от 1 до K включительно. (K <= 5).

Показать ответ и решение
from itertools import permutations
k = int(input())
# Функция lambda x: ’’.join(x) "склеивает" кортеж
# ("A", "B", "C") -> "ABC"
print(*map(lambda x: ’’.join(map(str, x)),
           permutations(range(1, k + 1), 5)))

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 90#46842Максимум баллов за задание: 1

Напишите программу, которая выводит все возможные шестизначные числа (без повторения цифр), которые можно составить из цифр от L до M включительно. (L <= M <= 6)

Показать ответ и решение

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 91#46843Максимум баллов за задание: 1

Пусть "О"означает выпал орёл, а "Р"выпала решка. Напишите программа, которая выводит все возможные наборы выпадений при N бросках.

Показать ответ и решение
from itertools import product

n = int(input())
print(*map(lambda x: ’’.join(x),
           product([’O’, ’P’], repeat=n)), sep="\n")

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 92#46844Максимум баллов за задание: 1

В магазине продаётся виноградный, персиковый и яблочный сок. Нужно купить N пакетов сока. Выведите с новой строки все возможные различные наборы, которые можно составить?

Показать ответ и решение
from itertools import product
juice = [’В’, ’П’, ’Я’]
n = int(input())
print(*map(lambda x: ’’.join(x),
           product(juice, repeat=n)), sep="\n")

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 93#46845Максимум баллов за задание: 1

Анаграмма — это слово (не обязательно осмысленное), полученное из данного слова перестановкой букв. Например, wco является анаграммой слова cow. Выведите с новой строки все возможные анаграммы слова info.

Показать ответ и решение
from itertools import permutations

print(*map(lambda x: ’’.join(x),
           permutations(’info’)), sep="\n")

Ответ: info inof ifno ifon ionf iofn nifo niof nfio nfoi noif nofi fino fion fnio fnoi foin foni oinf oifn onif onfi ofin ofni

Ошибка.
Попробуйте повторить позже

Задача 94#46846Максимум баллов за задание: 1

В финальном забеге на 128 м участвуют Вова, Илья и Дима. Напишите программ возможные варианты распределения призовых мест.

Показать ответ и решение
from itertools import permutations
print(’1 место\t2 место\t3 место’)
print(*map(lambda x: ’\t’.join(x),
            permutations(["Вова", "Илья", "Дима"])), sep="\n")

Ответ: -

Ошибка.
Попробуйте повторить позже

Задача 95#46847Максимум баллов за задание: 1

Напишите программу, которая выводит всевозможные двузначные нечётные числа, состоящие из цифр 1, 2, 3, 6, 9.

Показать ответ и решение
from itertools import product
for x in product([’1’, ’2’, ’3’, ’6’, ’9’], repeat=1):
    for last_digit in [’1’, ’3’, ’9’]:
        print(’’.join(x) + last_digit)

Ответ: 11 13 19 21 23 29 31 33 39 61 63 69 91 93 99

Ошибка.
Попробуйте повторить позже

Задача 96#52081Максимум баллов за задание: 1

Сколько рёбер имеет полный граф на семи вершинах?

Показать ответ и решение

В графе имеется 7  вершин, из каждого выходит по 6  ребер. Но если мы просто это перемножим, то посчитаем не кол-во рёбер, а кол-во упорядоченных пар. Можно представить это как 2  руки, но 1  рукопожатие. Значит, кол-во ребер равно 7⋅6
 2  = 21  .

Ответ: 21

Ошибка.
Попробуйте повторить позже

Задача 97#53974Максимум баллов за задание: 1

Марии нужно выбрать 4  из 12  баскетболистов, чтобы сформировать команду для предстоящего турнира. Сколькими различными способами она может выбрать свою команду?

Показать ответ и решение

Чтобы решить проблему, мы можем использовать комбинационную формулу, которая задается:

         n!
Ckn = ----------
     k!⋅(n− k)!

где n  - общее количество игроков, а k  - количество игроков, которые будут выбраны.

В этом случае Марии нужно выбрать 4  игрока из 12  , поэтому у нас есть:

  4       12!       12!   12⋅11⋅10 ⋅9
C12 = 4!⋅(12-−-4)! = 4!⋅8!-= -4-⋅3⋅2⋅1--= 495

Таким образом, существует 495  различных способов, которыми Мария может выбрать свою команду из 4  баскетболистов.

Ответ: 495

Ошибка.
Попробуйте повторить позже

Задача 98#53975Максимум баллов за задание: 1

Предположим, что в книжном магазине на определенной полке в общей сложности 20  книг. Если клиент хочет купить       5  книг, сколькими различными способами он может выбрать эти 5  книг с полки?

Показать ответ и решение

Чтобы решить эту проблему, мы можем снова использовать комбинационную формулу:

         n!
Ckn = ----------
     k!⋅(n− k)!

где n  - общее количество книг, а k  - количество книг, которые будут выбраны.

В этом случае клиент хочет выбрать 5  книг из 20  , поэтому у нас есть:

  5       20!       20!    20⋅19⋅18 ⋅17⋅16
C20 = 5!⋅(20-−-5)! = 5!⋅15! = --5⋅4-⋅3⋅2⋅1---= 15504

Таким образом, существует 15504  различных способа, с помощью которых покупатель может выбрать 5  книг с полки.

Ответ: 15504

Ошибка.
Попробуйте повторить позже

Задача 99#53976Максимум баллов за задание: 1

ВО хочет передать 42  различных сообщения через световое табло, состоящее из лампочек. Каждая лампочка имеет три состояния: включена и горит белым, выключена, мигает. Сколько лампочек нужно ВО для достижения этой цели?

Показать ответ и решение

Поскольку каждая лампочка имеет три возможных состояния, мы можем представить каждое сообщение, используя последовательность из трех состояний для каждой лампочки. Например, последовательность «включено и горит белым, выключено, мигает» может представлять одно сообщение.

Количество различных последовательностей из трех состояний, которые могут быть назначены каждой лампочке, равно 3  . Следовательно, общее число возможных последовательностей для n лампочек равно 3n  .

Нам нужно найти минимальное значение n  такое, чтобы  n
3  было больше или равно 42  . Чтобы сделать это, мы можем взять логарифм обеих сторон неравенства:

3n ≥ 42
     n
log3(3 ) ≥ log3(42)
n ≥ log3(42)

Используя калькулятор, мы можем найти, что log3(42)  равно приблизительно 3,43  . Следовательно, нам нужно по крайней мере 4  лампочки, чтобы представлять 42  различных сообщения.

Если мы хотим найти общее количество различных последовательностей из трех состояний, которые могут быть присвоены 4  лампочкам, мы можем использовать формулу 34  , которая дает нам 81  . Следовательно, ВО требуется по крайней мере 4  лампочки для передачи 42  различных сообщений, и у нее есть 81  различная последовательность состояний на выбор.

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 100#56479Максимум баллов за задание: 1

Найдите число точек пересечения пар диагоналей (не являющиеся вершинами) в выпуклом 100-угольнике, если никакие три диагонали не проходят через одну точку.

Показать ответ и решение

Получается, что требуется найти число пар пересекающихся диагоналей выпуклого 100-угольника. Каждая пара пересекающихся диагоналей — это четвёрка вершин 100-угольника, концов этих диагоналей. Наоборот, для любой четвёрки вершин существует ровно одна пара пересекающихся диагоналей, концами которых являются эти четыре вершины.

Таким образом, число пар пересекающихся диагоналей равно числу способов выбрать четыре вершины из n, то есть C4   = 3921225
  100

Ответ: 3921225
Рулетка
Вы можете получить скидку в рулетке!