有一个8层灯塔,每层的灯数都是上一层的2倍,共有765盏灯。编程求最上层的灯数:
1 #include<stdio.h>
2 #include <math.h>
3
4 int main(int argc, char const *argv[])
5 {
6 /*pow() 返回值的数据类型为 double*/
7
8 double c = 0;
9
10 for (int i = 0; i <= 7; ++i)
11 {
12 c += pow(2,i);
13 }
14
15 printf("顶层:%.f\n",765/c);
16 printf("底层:%.f\n",(765/c)*pow(2,7));
17 return 0;
18 }
分析:
设顶层总共有 x 盏灯 第二层有 x·2^1 盏 第三层有 x·2^2 盏 ......第八层有 x·2^7 盏
共 : x·(2^0+2^1+2^2·····+2^7) = 765 盏
x = 765 / (2^0+2^1+2^2·····+2^7)