分享一个很巧妙的方法计算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;
}

猜你喜欢

转载自blog.csdn.net/Genius_bin/article/details/112251149