编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n<1000

编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n<1000

 

#include <stdio.h> #include <stdlib.h> int main(){ int sum=0; int start=2; int count=0; while(sum+1<1000){ start=start<<1; sum=sum+start; count++; } printf("count:%d/n",count); return 0; }

#include <stdlib.h> #include <stdio.h> #define N 1000 int main(){ int i,n=1; for(i=0;n<N+2;i++){ n=(n<<1 | 1); } printf("%d",--i); return 1; }

 

程序员能做,那就口算,n=9对不对?
2^2+2^3+…+2^n用二进制加,一位对一位没有一个有进位,每位都是 1 。1023等于1111111111 (10个1),大于1000,在前面减个1,就是111111111,n=9.看到前面是1^1+2^2+……没有2^1,所以最后的和为 111111101(二进制)。

你可能感兴趣的:(编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n<1000)