| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2349 人关注过本帖
标题:求助!这道题怎么编
只看楼主 加入收藏
yjcf
Rank: 1
来 自:西安工业大学
等 级:新手上路
帖 子:145
专家分:0
注 册:2008-3-29
收藏
 问题点数:0 回复次数:23 
求助!这道题怎么编
有一个八层灯塔,每层所点灯数都等于上一层的两倍,一共有765盏灯,求塔底灯数?
搜索更多相关主题的帖子: 灯塔 
2008-04-12 13:26
DoNO1
Rank: 1
等 级:新手上路
帖 子:155
专家分:0
注 册:2008-3-27
收藏
得分:0 
不知道
不知道你想用什么方法做,做这样的题方法很多。不过建议用递归调用。
2008-04-12 13:41
luozhibruce
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-4-12
收藏
得分:0 
#include<stdio.h>
main()
{
    int s,a,q,n,m,i;
    q=2;
    n=8;
    s=765;
    m=1;
    for(i=1;i<=8;i++)
        m=m*q;
    a=(s*(1-q))/(1-m);
    for(i=1;i<=7;i++)
        a=a*2;
    printf("%d\n",a);
}
2008-04-12 13:50
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
int h;
int count(int m,int n,int sum)
{
    if(n==8&&sum!=h)
        return 0;
    if(n==8&&sum==h)
        {
            printf("找到了底数了!");
            
            return 1;
        }
    if(m>h)
        {
           printf("你输入的数不存在!");
           exit(0);
        }
    if(count(2*m,n+1,sum+=2*m))
        {
           printf("%d  ",m);
           return 1;
        }
    return 0;
}
int main()
{   int n=1;
    printf("请输入灯的总数:");
    scanf("%d",&h);
    fflush(stdin);
    while(!count(n++,1,n));
}

[[it] 本帖最后由 sunkaidong 于 2008-4-12 14:22 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-12 14:10
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*
        此程序有些简陋,算法也不高明,希望诸位多给批评,谢谢。
*/
#include<stdio.h>
int deng(int n)
{
        int i=1;     /*设第一层灯数为1*/
        while(1)
        {
                if((i+2*i+4*i+8*i+16*i+32*i+64*i+128*i)==n)
                        break;  /*如果满足每一层是上层的2倍,且总数为765的条件
                                  就跳出循环*/
                ++i;
        }
        return i;              /*返回i值*/
}
int main(void)
{
        int n=765;             /*设塔灯总数为765*/
        n=deng(n); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~先把n值传递给函数形参,?
                                                         再用它来接收函数返回值*/
        printf("第八层的灯数为:%d\n",128*n);  /*把函数返回的值(也就是第一层塔灯
                                                 个数)乘以128(第八层是第一层的
                                                 128倍),就是第八层的塔灯个数*/



        getch();
}
2008-04-12 14:21
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我的又修改过了..可以看看...如果有什么问题可以告诉我..谢谢..

学习需要安静。。海盗要重新来过。。
2008-04-12 14:26
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 4# 的帖子
少了一层,8层应该是384。
2008-04-12 14:26
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
谢谢小广..呵呵
#include<stdio.h>
#include<stdlib.h>
int h;
int count(int m,int n,int sum)
{
    if(n==8&&sum!=h)
        return 0;
    if(n==8&&sum==h)
        {
            printf("找到了底数了!\n");
            printf("%d  ",m);
            return 1;
        }
    if(m>h)
        {
           printf("你输入的数不存在!");
           exit(0);
        }
    if(count(2*m,n+1,sum+=2*m))
        {
           printf("%d  ",m);
           return 1;
        }
    return 0;
}
int main()
{   int n=1;
    printf("请输入灯的总数:");
    scanf("%d",&h);
    fflush(stdin);
    while(!count(n++,1,n));
}

学习需要安静。。海盗要重新来过。。
2008-04-12 14:29
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
#include <stdio.h>
#define TOTAL  765  //总数
#define N      8    //层数
int main()
{
    int n=1<<N;
    int t = TOTAL/(n-1);
    printf("最底一层有%d盏灯\n", t*n/2);
    return 0;
}

没有调试,直接在这打的代码,帮我测试一下好不?
2008-04-12 14:32
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
燕子不要见生气啊..呵呵
燕子等比数列学的不错..用的很活....呵呵(分析下燕子代码)
#include <stdio.h>
#define TOTAL  765  //总数
#define N      8    //层数
int main()
{
    int n=1<<N;//假设最上面有1盏灯,这个作用就是求出地下室得灯数目,同时也是前八层总数多一
    int t = TOTAL/(n-1);//实际情况是最上面不是只有1盏,而是1的倍数
    printf("最底一层有%d盏灯\n", t*n/2);//t*n得到地下室的灯数目,除以2就是地面的灯数目
    return 0;
}

燕子不要见生气啊..呵呵

[[it] 本帖最后由 sunkaidong 于 2008-4-12 15:04 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-12 14:44
快速回复:求助!这道题怎么编
数据加载中...
 
   



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

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