from itertools import * # комбинаторика


'''с повтор. переменными'''
for i in product('123', repeat = 3):
    x = ''.join(i) #склеиваем в строку
    print(x)

'''БЕЗ ПОВТОРЯЮЩИХСЯ ПЕРЕМЕННЫХ'''
for i in permutations('123',r = 3):
    x = ''.join(i) #склеиваем в строку
    print(x)

''' в задачах где просят проверить кол-во чисел - проверяйте что бы число не начиналось с 0'''
if x[0] != '0':

'''В числе ровно четыре 1'''
if x.count('1') == 4:

'''Одинаковые элементы не стоят рядом'''
if x[0] != x[1] != x[2] ....

'''не забывайте что мы можем реплейсить в строке элементы'''
x= x.replace('2','*') # например четные

'''Элементы стоят в алфавитном порядке'''
If x[0] <= x[1] <= x[2] ....

'''Алексей составляет пятизначные числа в четырнадцатеричной системе счисления. 
Числа должны содержать ровно две различные цифры, при этом число должно оканчиваться на 0 или на 3. 
Сколько различных чисел может составить Алексей?'''

from itertools import *

k = 0
for x in product('0123456789abcd',repeat=5):
    s = ''.join(x)
    if s[0]!='0' and len(set(s))==2 and s[-1] in '03': #len(set(s)==2 - проверка что бы было ровно 2 различных цифры
        k += 1
print(k)


'''Сколько существует девятеричных пятизначных чисел, содержащих в своей записи ровно одну цифру 5, 
в которых никакие две одинаковые цифры не стоят рядом?'''

from itertools import *
k = 0
for i in product('012345678',repeat=5):
    x = ''.join(i)
    if x[0] != '0' and x.count('5') == 1 and x[0] != x[1] != x[2] != x[3] != x[4]:
        k+=1
print(k)



'''Сколько существует шестнадцатеричных четырёхзначных чисел, содержащих в своей записи ровно одну цифру 9, 
в которых никакие две чётные или две нечётные цифры не стоят рядом?'''
from itertools import *
k = 0
for s in product('0123456789ABCDEF', repeat = 4):
    s = ''.join(s)
    if s[0] != '0' and s.count('9') == 1:
        for el in '02468ACE':
            s = s.replace(el, 'Ч')
        for el in '13579BDF':
            s = s.replace(el, 'Н')
        if 'НН' not in s and 'ЧЧ' not in s:
            k += 1
print(k)

'''Все пятибуквенные слова, составленные из букв Е, П, С, У, Х, записаны в алфавитном порядке 
и пронумерованы начиная с 1. Буквы могут входить в слово неоднократно или не входить вовсе.
 Но последней буквой может быть только согласная. Под каким номером стоит слово УСПЕХ?'''
from itertools import *
k = 0
for i in product(sorted('УСПЕХ'), repeat = 5):
    x = ''.join(i)
    if x[-1] in 'СПХ':
        k+=1
        if x == 'УСПЕХ':
            print(k,x)

'''
НЕ ЗАБЫВАЙТЕ ЧТО В СПИСКЕ СЛОВА СТОЯТ С ПОРЯДКОВОГО НОМЕРА 1

СОРТИРУЕМ БУКВЫ В АЛФ ПОРЯДКЕ