分享一个很巧妙的方法计算s=2^0+2^1+2^2+...+2^n;(注意这里的“^“不是异或)

2^0=1(B) 二进制,下同
2^1=2=10;
2^2=4=100;
··· ···
n=0,s=10-1=1;
n=1,s=100-1=11;
n=2,s=1000-1=111;
n=3,s=10000-1=1111;
··· ···
因此可以使用移位得到s,方法如下:

#include "stdio.h"

int Sum(int n)
{
	int sum = 0;
	sum = (1 << n) - 1;  //用1移位得到s
	return sum;
}

int main()
{	
	int n;
	scanf("%d", &n);
	printf("%d", Sum(n));
	return 0;
}
posted @ 2021-01-05 19:31  nepu_bin  阅读(336)  评论(0)    收藏  举报