Мы уже определили число складывания здесь .
Но теперь мы собираемся определить супер складной номер. Число Super Folding - это число, которое, если его сложить достаточно раз, в конечном итоге достигнет единицы, меньшей степени двойки. Метод складывания немного отличается от вопроса с номером сложения.
Алгоритм сворачивания выглядит следующим образом:
Взять двоичное представление
например, 5882
1011011111010
Разлил его на три раздела. Первая половина, последняя половина и средняя цифра (если она имеет нечетное количество цифр)
101101 1 111010
Если средняя цифра равна нулю, это число нельзя сложить
Обратный второй тайм и накладывается на первый тайм
010111 101101
Добавьте цифры на месте
111212
- Если в результате есть любые 2, в результате число не может быть сложено, иначе новое число является результатом алгоритма складывания.
Число - это число Super Folding, если его можно сложить в непрерывную цепочку единиц. (Все складные номера также являются супер складными номерами)
Ваша задача - написать код, который принимает число и выводит истинное значение, если число является числом Super Folding, и ложно в противном случае. Вы будете оцениваться по размеру вашей программы.
Примеры
+5200
Преобразовать в двоичный файл:
1010001010000
Разделить пополам:
101000 1 010000
Середина одна, поэтому мы продолжаем накладывать половинки:
000010
101000
Добавил их:
101010
Нет двойки, поэтому мы продолжим разделение пополам:
101 010
Fold:
010
101
111
Результат 111
(7 в десятичной системе счисления), так что это число Super Folding Number.
Тестовые случаи
Первые 100 супер складных номеров:
[1, 2, 3, 6, 7, 8, 10, 12, 15, 20, 22, 28, 31, 34, 38, 42, 48, 52, 56, 63, 74, 78, 90, 104, 108, 120, 127, 128, 130, 132, 142, 150, 160, 170, 178, 192, 204, 212, 232, 240, 255, 272, 274, 276, 286, 310, 336, 346, 370, 400, 412, 436, 472, 496, 511, 516, 518, 524, 542, 558, 580, 598, 614, 640, 642, 648, 666, 682, 704, 722, 738, 772, 796, 812, 852, 868, 896, 920, 936, 976, 992, 1023, 1060, 1062, 1068, 1086, 1134, 1188, 1206, 1254, 1312, 1314, 1320, 1338, 1386, 1440, 1458, 1506, 1572, 1596]
3
пробраться в тестовые случаи? Я не вижу, как его можно сложить, так как он распадается1 1
, сразу давая2
. Или вы говорите, что сбросить ноль также имеет значение?