读书人

看看这个算法!解决方法

发布时间: 2012-03-08 13:30:13 作者: rapoo

看看这个算法!~
求S=2+2*2+2*2*2+....+n个2的值!
以下是算法,可是看不懂,拜托帮忙解释下!~

#include <stdio.h>
int main(int _)
{
scanf( "%d ",&_);
printf( "%d\n ",(((1 < <_)-1) < <1));
}


[解决办法]
其实楼主所说的这个公式可以再化简,把 2 提出来,然后公式里面就是 2 的 n 次方减 1 。

后面的求值的过程中是用的移位来计算的。

1 向左移 1 位就是 2的一次方;1 向左移 2 位就是 2的二次方;
1 向左移 n 位就是 2的n次方;

所以 :(1 < <_) 就是 2 的 n 次方 ,((1 < <_)-1) 就是 2 的 n 次方减 1 。

(((1 < <_)-1) < <1) 就是 2 的 n 次方减 1 再乘以 2 。也就是我们化简后的公式了。

读书人网 >C语言

热点推荐