习题解析之:宝塔上的琉璃灯
【问题描述】
有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有 765 盏琉璃灯,计算并输出每层各有多少盏琉璃灯。
编程要求
编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。
输入格式
本题没有输入。
输出格式
输出为 8 行
每行都是一个正整数,从上往下数字依次增大,每个数字代表本层宝塔上的琉璃灯数目。
输出:
x
x
xx
xx
xx
xx
xxx
xxx
【编程思路】
本题是一个搜索问题。可以通过循环穷举第1 层灯的数量来解决。
我们先假定第 1 层放 1盏灯,这样第 2 层至第 8 层灯的数量可以确定,分别为2、4、8、16、32、64、128,这样 8 层总的灯数量为255,没有达到765 盏灯。
由此,我们增加第 1 层灯的数量,假定第 1 层放 2 盏灯,这样第 2 层至第 8 层灯的数量可以确定,分别为4、8、16、32、64、128,256,这样 8 层总的灯数量为510,还是没有达到765 盏灯。
继续增加第 1 层灯的数量,再确定第2 层至第 8 层灯的数量,并累加,直到灯的总数达到765盏,找到了解,退出循环。
在程序中,为了保存每层灯的盏数,可以用一个列表来存储。
【源程序】
按照上述编程思路,编写的源程序如下:

浙公网安备 33010602011771号