2016-10-30 51 views
1

我想知道是否有恒定时间算法或某种x86征,用于计算这样的:2系列的有效幂:(2^n)+(2 ^(n-1))+(2 ^(n-2))

鉴于 'N',从 'N至0' 计算该系列的2的幂的总和:

2^N + 2 ^(N-1)+ 2 ^( (n-2)+ 2 ^(n-3)... 2 ^(0)

+4

是的,有一个!结果是2 ^(n + 1)-1 = 1U <<(n + 1)-1'。 – Franck

+2

手工完成前四五步,您会注意到一种模式。或者用二进制写出总和,更明显的模式。 – Mat

+0

啊,那很完美。请填写答案,我会接受 – user1043761

回答

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)