Двоичный код имеет одноразрядное представление в задаче только при 0 и еще остается незначащий ноль, т.е число 0 будет иметь двоичный код 00.
Получается:
Д-00
Х-01
Р-10
О-11
В-100
Может появиться вопрос, почему В имеет двоичный код 100, а не 110, к примеру, или не 101
Алфавит(в этой задаче) состоит из 5 букв(N=5)
N=2^i
i=3, т.е на каждую букву по 3 символа
Д-000
Х-001
Р-010
О-011
В-100
нули перед кодом роли не играют(тоже самое в десятичной системе, число 5 можно записать как 05 или 005 и тд.), следовательно, их можно просто отбросить(за исключением 0, тк есть условие об одноразрядном представлении)
ХОРОВОД=011 110 111 001 100
Если код такого вида:
010 010 001 100 100
то
Д-100=4(в дес.с)
Х-01=1(в дес.с)
Р-10=2(в дес.с)
О-00=0(в дес.с)
В-11=3(в дес.с)
Однако в условии сказано, что буквам Д,Х,Р,О,В присваиваются дв.коды чисел 0,1,2,3,4 соответственно :)
Решение 1:
nominative = 1 # окончания им.падеж: гриб
generative = [2, 3, 4] # список окончаний род.падеж: гриба
plural_generative = [5, 6, 7, 8, 9, 0] # список окончаний род.падеж множ-го: грибов
for number in range(0, 51): # цикл с значением от 0 до 51
"""number % 10 возвращает последнюю цифру из числа"""
if (number % 10) == nominative:
print(f"{number} гриб")
elif (number % 10) in generative:
print(f"{number} гриба")
elif (number % 10) in plural_generative:
print(f"{number} грибов")
Решение 2:
nominative = 1 # окончания им.падеж: гриб
generative = [2, 3, 4] # список окончаний род.падеж: гриба
for number in range(0, 51): # цикл с значением от 0 до 51
"""number % 10 возвращает последнию цифру из числа"""
if (number % 10) == nominative:
print(f"{number} гриб")
elif (number % 10) in generative:
print(f"{number} гриба")
else:
print(f"{number} грибов")
Объяснение:
В комментариях.
Поделитесь своими знаниями, ответьте на вопрос: