В этом задании вы будете вычислять числа из любопытной последовательности.
Ваш ввод - одно десятичное неотрицательное целое число. Поменяйте местами биты в этом целом числе, а затем возведите в квадрат число, чтобы получить требуемый результат.
При обращении битов вы не должны использовать начальные нули на входе. Например:
26 (base 10) = 11010 (base 2) -> 01011 (base 2) = 11 -> 11*11 = 121
Первые 25 входов / выходов этой последовательности:
0: 0
1: 1
2: 1
3: 9
4: 1
5: 25
6: 9
7: 49
8: 1
9: 81
10: 25
11: 169
12: 9
13: 121
14: 49
15: 225
16: 1
17: 289
18: 81
19: 625
20: 25
21: 441
22: 169
23: 841
24: 9
Ваше решение должно работать для целых чисел произвольного размера. Если ваш язык не имеет удобного встроенного метода их использования, реализуйте свой ответ так, как будто он есть. Вы тогда извиняетесь, если ваш ответ разбивается на большие числа. Однако не используйте хитрости / ограничения, которые работают только для ограниченного домена (например, таблицы поиска).
Ваша оценка - это количество байтов исходного кода.
Бонус -50%, если вы никогда не конвертируете число в двоичный код. Это не ограничивается встроенными функциями. Если вы перебираете число по битам (с помощью сдвига, маскирования или любого другого метода), это также будет учитываться как преобразование. Я не знаю, возможно ли это на самом деле, но это дает стимул для определения паттерна в последовательности.
Наименьший счет выигрывает.