标签: c++ algorithm math
这是诀窍的代码。我知道如何在O(logn)时间内计算m ^ n的概念,我认为它是相关的,但是如何?
for(long long int i = 2; N; N /= 2, i *= i){ if(N & 1){ ans *= i; } }
答案 0 :(得分:10)
那是square and multiply algorithm。
N / = 2具有去除最低位的效果(当剩余的所有位都为零时,算法结束)。
N& 1检查最低位是奇数还是偶数
答案 1 :(得分:1)
它基本上与log N time m power n算法的工作方式相同。 只需跟踪这两组输入的代码:
P.S:ans应该设置为1。
我相信你会得到它。