我想知道是否有一个常数时间算法或某种x86内在函数用于计算:
鉴于' n',计算从' n到0'的一系列权力之和:
2 ^ n + 2 ^(n-1)+ 2 ^(n-2)+ 2 ^(n-3)... 2 ^(0)
答案 0 :(得分:2)
几何系列的结果如k ^ n + k ^(n-1)+ k ^(n-2)+ k ^(n-3)... k ^(0)是(k ^( n + 1) - 1)/(k-1)。
如果k = 2,这甚至更简单:结果是2 ^(n + 1) - 1;它经常被使用。
您可以使用左移操作(例如
)在恒定时间内计算它(1U << (n+1)) - 1
或
~(~0U << n)