| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6798 人关注过本帖
标题:有一八层灯塔,每层的灯数都是上一层的两倍,共有765盏灯,求最上层与最下层 ...
只看楼主 加入收藏
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:9 
有一八层灯塔,每层的灯数都是上一层的两倍,共有765盏灯,求最上层与最下层的灯数。
我用穷举,这个为什么有毛病#include<stdio.h>
int main(){
    int a,b,c,d,e,f,g,h;
    for(a = 1;a <= 765;a++)
        for(b = 1;b <= 765;b++)
            for(c = 1;c <= 765;c++)
                for(d = 1;d <= 765;d++)
                    for(f = 1;f <= 765;f++)
                        for(e = 1;e <= 765;e++)
                            for(g = 1;g <= 765;g++)
                                for(h = 1;h <= 765;h++)
                                    if(b / a == 2 && c / b == 2 && d / c == 2 && e / d == 2 && f /e == 2 && g / f == 2 && h / g == 2)
                                    {
                                        printf("the first floor has %d\n",a);
                                        printf("the eight floor has %d\n",h);
                                    }
}
搜索更多相关主题的帖子: int for printf the first 
2018-02-21 21:43
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
收藏
得分:0 
这个又有什么毛病啊
#include<stdio.h>
int main(){
    int i,sum = 0,n,m = 1;
    while(1)
    {
        n = m;
        sum = m;
        for(i = 1;i <= 8;i++)
        {
            m *= 2;
            sum += m;
        }
        if(sum == 765)
        {
            printf("%d\n",n);
            printf("%d",m);
        }  
        m = n;
        m++;
    }
}
2018-02-21 22:22
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
收藏
得分:0 
以下是引用木下瞳在2018-2-21 22:22:59的发言:

这个又有什么毛病啊
#include<stdio.h>
int main(){
    int i,sum = 0,n,m = 1;
    while(1)
    {
        n = m;
        sum = m;
        for(i = 1;i <= 8;i++)
        {
            m *= 2;
            sum += m;
        }
        if(sum == 765)
        {
            printf("%d\n",n);
            printf("%d",m);
        }  
        m = n;
        m++;
    }
}

这个我知道哪里错了
2018-02-21 22:27
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:10 
回复 楼主 木下瞳
你的思路有问题。下一层塔的灯数是上一层塔的两倍。为何你会写成b/a==2,而不是b%a==0

思路:求出顶层的灯数,就可以求出底层的灯数了。
如果顶层有n个,那么总和就是n+2*n+....+2^7*n
程序代码:
    int sum=0;
    int i;
    int m=1;
    for (i = 0; i < 8; i++)
    {
        sum = sum + m;
        m *= 2;
    }

那么塔顶的灯数就是
HightLight=765/sum;

塔底的灯数就是HightLight*2^7
LowLight=HightLight<<7;




[此贴子已经被作者于2018-2-22 00:15编辑过]


普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-02-22 00:11
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:10 
b/a==2这个判断条件不对的。b和a都是int型,如果b=5、a=2,b/a==2。可以写成b==2*a;不过你第一个程序实在太夸张了要循环765的8次方次。
 你第二个程序实际上是9层楼,而且是无限循环没有结束。
2018-02-22 09:48
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
收藏
得分:0 
回复 4楼 lanke711
哦哦,原来如此,感谢
2018-02-22 10:26
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
收藏
得分:0 
回复 5楼 李晨经纪人
感谢
2018-02-22 10:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
765÷(2^8-1)=3  3*2^7=384

DO IT YOURSELF !
2018-02-22 11:09
niuniul
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:60
注 册:2018-1-13
收藏
得分:0 
路过打酱油

不见满街漂亮妹,哪个归得程序员?
2018-02-22 11:33
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
收藏
得分:0 
程序代码:
/*有一八层灯塔,每层的灯数都是上一层的两倍,共有765盏灯,求最上层与最下层的灯数。*/
#include <stdio.h>
#define AllLight 765
int main()
{
    int sum = 0;
    int layerLight;
    for (int i = 1; i <= AllLight / 2 / 2 / 2 / 2 / 2 / 2 / 2; i++)
    {
        layerLight = i;
        for (int j = 1; j <= 8; j++)
        {
            sum += layerLight;
            layerLight = layerLight * 2;
        }
        if (sum == AllLight)
        {
            printf("第一层:%d\n第八层:%d\n", i, layerLight / 2);
            /*
            layerLight = i;
            for (int j = 1; j <= 8; j++)
            {
                printf("%d\n", layerLight);
                layerLight = layerLight * 2;
            }
            */
            break;
        }
        else sum = 0;
    }
}
2018-02-26 15:18
快速回复:有一八层灯塔,每层的灯数都是上一层的两倍,共有765盏灯,求最上层与 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048489 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved