首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

看看这个算法!解决方法

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

看看这个算法!~
求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 。也就是我们化简后的公式了。

热点排行