Всем привет, сегодня задача «Medium» уровня, с необычным решением.
В ней нужно было проверить, является ли заданное число палиндромом при разных основаниях (двоичное, троичное и т.д.). Диапазон оснований от 2 до n - 2.
Я какое-то время смотрел на задачу (у меня плохо получается даже с двоичными числами, а тут нужно сразу по всем основаниям проверять). И решил обойти все сложности, пользуясь слабостью платформы LeetCode, а именно тем, что при сабмишенах она выдает правильные ответы. Я подумал, что таких чисел, «полностью палиндромных» будет не очень много, соответственно я смогу их записать в список и выдавать True, если число в нем, и False в остальных случаях.
На первом шаге это выглядело вот так:
Дальше, я бы добавлял в список ans нужные числа.
Но к моему удивлению, это оказался работающий код. То есть таких чисел не бывает (во всяком случае в диапазоне от 0 до 10^5)
Еще можно просто пропустить выполнение этой функции и она автоматом даст False
Настоящее решение строится на преобразовании числа по каждому основанию в заданном диапазоне и сравнению с перевернутым числом.
Это решение я подсмотрел тут .
Правда из-за того, что всякий ответ для этой задачи False, проверить все ли правильно в решении затруднительно.
Но логика вроде нормальная
До скорого