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