Это вопрос : "Если заданы 2 целых числа x и y, проверьте, является ли x целочисленной степенью y" (например, для x = 8 и y = 2 ответ "истинно", а для x = 10 и y = 2 "false" ).
Очевидное решение:
int n = y; while(n < x) n *= y; return n == x
Теперь я думаю о том, как улучшить его.
Конечно, я могу проверить некоторые особые случаи: например. оба x
и y
должны быть либо нечетными, либо четными числами, то есть мы можем проверить младший значащий бит x
и y
. Однако я задаюсь вопросом, могу ли я улучшить сам алгоритм ядра.