Ваша задача, если вы решите ее принять, состоит в том, чтобы, учитывая целое число K >= 1
, найти неотрицательные целые числа A
и выполнить так, чтобы выполнялось B
хотя бы одно из двух следующих условий:
K = 2^A + 2^B
K = 2^A - 2^B
Если не существует таких A
и B
ваша программа может вести себя любым способом. (Чтобы уточнить, A
и B
может быть равным.)
Контрольные примеры
Часто существует несколько решений для числа, но вот несколько:
K => A, B
1 => 1, 0
15 => 4, 0 ; 16 - 1 = 15
16 => 5, 4 ; 32 - 16 = 16; also 3, 3: 8 + 8 = 16
40 => 5, 3 ; 2^5 + 2^3 = 40
264 => 8, 3
17179867136 => 34, 11 ; 17179869184 - 2048 = 17179867136
Последний тест, 17179867136
, должны работать менее чем за 10 секунд на любой относительно современной машины. Это код гольфа, поэтому выигрывает самая короткая программа в байтах. Вы можете использовать полную программу или функцию.
16
, и так 5,4
и 3,3
в силе.
A
, B
быть отрицательным? (например, -1, -1
для 1)