Задания для самостоятельного выполнения

Сложность:
Rare
  1. Напишите программу для решения задач своего варианта.
  2. Оформите отчёт в README.md. Отчёт должен содержать:
    • Условия задач
    • Описание проделанной работы
    • Скриншоты результатов
    • Ссылки на используемые материалы

Сложность:
Medium
  • Напишите для функций доктесты

Сложность:
Well-done
  • Обобщите алгоритмы решения своих задач и оберните их в соответствующие классы

Требования и ограничения

Решения задач оформить в виде функций, возвращающих ответы. Для решения первой задачи использовать itertools.

Для справки

  1. Itertools в Python - Хабр
  2. itertools — Functions creating iterators for efficient looping
  3. Итерируем правильно: 20 приемов использования в Python модуля itertools

Варианты заданий

    • Тимофей составляет 5-буквенные коды из букв Т, И, М, О, Ф, Е, Й. Буква Й может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой И. Все остальные буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Тимофей?

    • Сколько единиц содержится в двоичной записи значения выражения \( 4 ^ {2020} + 2 ^ {2017} − 15 \)?

    • Найдите среди целых чисел, принадлежащих числовому отрезку \( [174457; 174505] \), числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в два соседних столбца на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке также должны следовать в порядке возрастания. Например, в диапазоне \( [5; 9] \) ровно два различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона вывод на экран должен содержать следующие значения:

    2 3
    2 4
    
    • Ольга составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Ольга использует 4-буквенные слова, в которых есть только буквы A, B, C, D, X, Y, Z. При этом первая буква кодового слова  — это буква X, Y или Z, а далее в кодовом слове буквы X, Y и Z не встречаются. Сколько различных кодовых слов может использовать Ольга?

    • Значение арифметического выражения \( 9 ^ 8 + 3 ^ 5 − 9 \) записали в системе счисления с основанием 3. Сколько цифр 2 содержится в этой записи?

    • Найдите все натуральные числа, принадлежащие отрезку \( [40000; 50000] \), у которых ровно пять различных нечётных делителей (количество чётных делителей может быть любым). Выведите найденные числа в порядке возрастания.

    • Андрей составляет 6-буквенные коды из букв А, Н, Д, Р, Е, Й. Буква Й может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой Е. Все остальные буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Андрей?

    • Сколько единиц содержится в двоичной записи значения выражения \( 8^{2020} + 4^{2017} + 26 − 1 \)?

    • Найдите среди целых чисел, принадлежащих числовому отрезку \( [245 690; 245 756] \) простые числа. Выведите на экран все найденные простые числа в порядке возрастания, слева от каждого числа выведите его порядковый номер в последовательности. Каждая пара чисел должна быть выведена в отдельной строке. Например, в диапазоне \( [5; 9] \) ровно два различных натуральных простых числа  — это числа 5 и 7, поэтому для этого диапазона вывод на экран должен содержать следующие значения:

    1 5
    3 7
    
    • Настя составляет 6-буквенные коды из букв Н, А, С, Т, Я. Каждая допустимая гласная буква может входить в код не более одного раза. Сколько кодов может составить Настя?

    • Значение арифметического выражения \( 16^{18} · 4^{10} − 46 − 16 \)  записали в системе счисления с основанием 4. Сколько цифр 3 содержится в этой записи?

    • Пусть \(M\)  — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю. Найдите целые числа, большие 452 021, в порядке возрастания, такие, для которых значение \(M\) при делении на 7 даёт в остатке 3. Вывести первые 5 найденных чисел и соответствующие им значения \(M\).

      Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем  — значение \(M\). Строки выводятся в порядке возрастания найденных чисел.

      Например, для числа 20: \( M  =  2 + 10  =  12 \), остаток при делении на 7 не равен 3; для числа 21: \( M  =  3 + 7  =  10 \), остаток при делении на 7 равен 3.

    • Вася составляет 6-буквенные слова, в которых могут быть использованы только буквы В, И, Ш, Н, Я, причём буква В используется не более одного раза. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Слово не должно начинаться с буквы Ш и оканчиваться гласными буквами. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?

    • Сколько единиц содержится в двоичной записи значения выражения \( 4^{2014} + 2^{2015} − 8 \)?

    • Найдите все натуральные числа \(N\), принадлежащие отрезку \( [400 000 000; 600 000 000] \), которые можно представить в виде \( N  =  2^m · 3^n \), где \( m \)  — чётное число, \( n \)  — нечётное число. Выведите все найденные числа в порядке возрастания.

    • Ученица составляет 5-буквенные слова из букв ГЕПАРД. При этом в каждом слове ровно одна буква Г, слово не может начинаться на букву А и заканчиваться буквой Е. Какое количество слов может составить ученица?

    • Значение выражения \( 5^{36} + 5^{24} − 25 \) записали в системе счисления с основанием 5. Сколько цифр 4 содержится в этой записи?

    • Найдите 5 чисел больших 500000, таких, что среди их делителей есть число, оканчивающееся на 8, при этом этот делитель не равен 8 и самому числу. В качестве ответа приведите 5 наименьших чисел, соответствующих условию.

      Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем минимальный делитель, оканчивающийся на 8, не равный 8 и самому числу.

    • Иван составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Иван использует все пятибуквенные слова в алфавите {A, B, C, D, E}, удовлетворяющие такому условию: кодовое слово не может начинаться с буквы E и заканчиваться буквой A. Сколько различных кодовых слов может использовать Иван?

    • Сколько единиц содержится в двоичной записи значения выражения: \( 4^{511} + 2^{511} − 511 \)?

    • Пусть \( M(N) \)  — произведение 5 наименьших различных натуральных делителей натурального числа \( N \), не считая единицы. Если у числа \( N \) меньше 5 таких делителей, то \( M(N) \) считается равным нулю.

      Найдите 5 наименьших натуральных чисел, превышающих 200 000 000, для которых \( 0 < M(N) < N \). В ответе запишите найденные значения \( M(N) \) в порядке возрастания соответствующих им чисел \( N \).

    • Рассматриваются символьные последовательности длины 6  в пятибуквенном алфавите {К, А, Т, Е, Р}. Сколько существует таких последовательностей, которые начинаются с буквы Р и заканчиваются буквой К?

    • Значение выражения \( 216^6 + 216^4 + 36^6 − 6^{14} − 24 \) записали в системе счисления с основанием 6. Сколько различных цифр содержит эта запись?

    • Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

      • символ ? означает ровно одну произвольную цифру;

      • символ * означает любую последовательность цифр произвольной длины; в том числе * может задавать и пустую последовательность.

      Например, маске 123*4?5 соответствуют числа 123405 и 12365485.

      Среди натуральных чисел, не превышающих \( 10^9 \), найдите все числа, соответствующие маске 12345?7?8, делящиеся на число 23 без остатка.

      Запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце  — соответствующие им результаты деления этих чисел на 23.

    • Олег составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Олег использует 4-буквенные слова, в которых есть только буквы A, B, C, D, E, X, Z, причём буквы X и Z встречаются только на двух первых позициях, а буквы A, B, C, D, E  — только на двух последних. Сколько различных кодовых слов может использовать Олег?

    • Значение арифметического выражения \( 49^{10} + 7^{30} – 49  \)  записали в системе счисления с основанием 7. Сколько цифр 6 содержится в этой записи?

    • Найдите среди целых чисел, принадлежащих числовому отрезку \( [312614; 312651] \), числа, имеющие ровно шесть различных натуральных делителей. Для каждого найденного числа запишите эти шесть делителей в шесть соседних столбцов на экране с новой строки. Делители в строке должны следовать в порядке возрастания.

      Например, в диапазоне \( [12; 15] \) ровно шесть различных натуральных делителей имеет число 12, поэтому для этого диапазона вывод на экране должен содержать следующие значения:

    1 2 3 4 6 12
    
    • Иван составляет 5-буквенные коды из букв И, В, А, Н. Буквы в коде могут повторяться, использовать все буквы не обязательно, но букву И нужно использовать хотя бы один раз. Сколько различных кодов может составить Иван?

    • Значение арифметического выражения \( 7 · 512^{120} − 6 · 64^{100} + 8^{210} − 255 \) записали в системе счисления с основанием 8. Сколько цифр 0 содержится в этой записи?

    • Найдите среди целых чисел, принадлежащих числовому отрезку \( [84052; 84130] \), число, имеющее максимальное количество различных натуральных делителей, если таких чисел несколько  — найдите минимальное из них. Выведите на экран количество делителей такого числа и само число.

      Например, в диапазоне [2; 48] максимальное количество различных натуральных делителей имеет число 48, поэтому для этого диапазона вывод на экране должен содержать следующие значения:

    10 48
    
    • Найдите количество пятизначных восьмеричных чисел, в которых все цифры различны и никакие две четные или нечетные не стоят рядом.

    • Значение выражения \( 81^{17} + 3^{24} − 45 \) записали в системе счисления с основанием 9. Сколько цифр 8 содержится в этой записи?

    • Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Например, у числа 6 есть два нетривиальных делителя: 2 и 3. Найдите все натуральные числа, принадлежащие отрезку \( [12345; 67890] \) и имеющие ровно три нетривиальных делителя. Для каждого найденного числа выведите его наибольший нетривиальный делитель. Ответы расположите в порядке возрастания.

      Например, в диапазоне \( [5; 16] \) ровно три различных нетривиальных делителя имеет число 16, поэтому для этого диапазона вывод на экран должен содержать следующие значения:

    16 8
    
    • Игорь составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Игорь использует трёхбуквенные слова, в которых могут быть только буквы Ш, К, О, Л, А, причём буква К появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем. Сколько различных кодовых слов может использовать Игорь?

    • Значение арифметического выражения \( 3 · 4^{38} + 2 · 4^{23} + 4^{20} + 3 · 4^5 + 2 · 4^4 + 1 \) записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?

    • Напишите программу, которая перебирает целые числа, большие 600 000, в порядке возрастания и ищет среди них такие, среди делителей которых есть хотя бы одно число, оканчивающееся на 7, но не равное 7 и самому числу. Необходимо вывести первые 5 таких чисел, и наименьший делитель, оканчивающийся на 7, не равный 7 и самому числу.

      Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем  — наименьший делитель, оканчивающийся на 7, не равный 7 и самому числу. Строки выводятся в порядке возрастания найденных чисел.