Такие задания со сложными условиями легче всего решать программой на питоне:
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))
Поделитесь своими знаниями, ответьте на вопрос:
Phyton Вывести на экран число, большее из двух, которые ввел пользователь
x = int(input())
y = int(input())
if x > y:
print(x)
if x == y:
print('Числа равны')
if y > x:
print(y)