【5IC-12】灯塔问题

 时间:2026-02-12 04:29:36

1、代码如下:

#include<iostream.h>

int main()

{

int S,n,m,i,j;

for(j=1;j<381;j++){

n=j; 

for(i=1,S=0;i<8;i++,n*=2)S=S+n; 

if(S==381){

cout<<n/2<<endl;; 

m=j; 

break; 

}

 

for(i=1,n=m,S=0;i<8;i++,n*=2)if(n==48)cout<<i<<endl; 

}

【5IC-12】灯塔问题

2、运行结果:

【5IC-12】灯塔问题

1、首先我们并不知道第一层有多少个,因此我们要用穷举法从1开始尝试:

如图:

【5IC-12】灯塔问题

2、然后在在符合条件时输出最底层:

for(i=1,S=0;i<8;i++,n*=2)S=S+n; 

if(S==381){

cout<<n/2<<endl;; 

m=j; 

break; 

这里除以2是由于循环语句中n自乘了2

【5IC-12】灯塔问题

3、把第一层的个数记录在m中,然后再找出48对应的层数,并输出:

for(i=1,n=m,S=0;i<8;i++,n*=2)if(n==48)cout<<i<<endl; 

【5IC-12】灯塔问题

  • python求序列最大值怎样求?
  • html的div元素中id使用
  • 法线方程公式是什么
  • 树的度和结点数的关系是什么
  • 怎样在HTML创建一个多重嵌套的列表
  • 热门搜索
    关于食品安全的手抄报 手抄报设计图 节能环保手抄报 秋天手抄报 三年级语文手抄报 普通话手抄报简单漂亮 防溺水手抄报简单漂亮 环保手抄报资料 好书推荐手抄报 防疫手抄报简单又精美