Такие задания со сложными условиями легче всего решать программой на питоне:
for n in range(1, 10000000): # Грубый перебор
n -= n % 4 # 1. Из числа N вычитается остаток от деления N на 4.
n = bin(n)[2:] # 2. Строится двоичная запись полученного результата. + срез "0b"
n = n + str(n.count('1') % 2) # 3. a)
n = n + str(n.count('1') % 2) # 3. б)
r = int(n, 2) # Перевод в 10 с.с.
if r > 56:
print(r)
break
ответ: 66
Если всё же рассуждать, то опять перебором:
Возьмём, например, число 5 и выполним алгоритм:
1. 5 - 5 % 4 = 4
2. 4 -> 100
3. a) 1001
б) 10010
R = 18, очень мало
Возьмём, например, 14:
1. 12
2. 1100
3. a) 11000
б) 110000
R = 48, маловато, но близко
Возьмём, например, 15:
1. 12
Видим, будет тоже, что и 14
Возьмём, например, 16:
1. 16
2. 10000
3. a) 100001
б) 1000010
R = 66, то, что нам нужно.
ответ: 66
Вот вариант без использования встроенных кэшей, только рекурсивная функция и словарь, всё как положено:
def pow(number, power):
powers = {0: 1, 1: number}
def rec(p):
if p in powers:
# уже вычисляли эту степень
return powers[p]
elif p % 2 == 0:
# чётный случай
result = rec(p//2) * rec(p//2)
powers[p] = result
return result
else:
# нечётный случай
result = rec(p-1) * number
powers[p] = result
return result
return rec(power)
print(pow(1.253, 25))
Поделитесь своими знаниями, ответьте на вопрос:
Написать на псевдокоде алгоритм решения игра "виселица"
ответ:
блок- схема программы «виселица»
блок-схема представляет собой графическое изображение работы программы. каждый возможный вариант развития событий в игре, каждая функция, отображается квадратом с соответствующей записью. переходы между действиями изображаются при стрелок. для начала, взгляните на блок «старт» и спускайтесь по стрелке ниже в следующий блок и так, пока не дойдете до блока «конец».
на рис.8.2-1 вы видите полную блок-схему для игры «виселица». вы можете двигаться от одного блока к другому только по стрелочкам. переход возможен только по ним, кроме тех случаев. когда из блока выходит несколько стрелок. это блоки условия. в зависимости от выбора игрока, ситуация будет развиваться по одному из нескольких вариантов:
85
рис 8.2-1 блок-схема программы «виселица».
конечно, вы можете начать писать программу и без разработки её блок-схемы. однако, в процессе написания кода у вас будут появляться новые идеи, почти наверняка вы забудете написать какую-нибудь функцию. и в результате придется редактировать, дописывать а то и просто удалять значительную часть кода. особенно обидно, когда программа практически готова и приходится переделывать значительную её часть. чтобы избежать этого, всегда продумывайте свою программу до того, как начнете её писать.