• 《程序设计引导和在线实践》例题2.1鸡兔同笼问题


    问题描述:

    一个笼子里里关了鸡和兔子。已经知道了笼子里的脚的总数,问笼子中至少有多少只动物,至多有多少只动物?

    输入数据

    第一行是测试的数据组数n,后面跟着n行输入,魅族测试数据占一行,包括一个正整数a(a < 32768)

    输出要求

    n行, 每行对应一个输入,输出是两个正整数,第一个是最少的动物书,第二是最大的动物数,两个正整数用空格分开

    如果没有满足要求的的情况出现,则输出两个0

    输入样例

    2

    3

    20

    输出样例

    0 0

    5 10

    以目前的‘智商’,恐怕又要暴力解决了!最少的动物肯定是兔子为主了,从零开始,每次加4直到两者(总脚数)之差小于4 如果差是2就再加一个动物 如果是0就结束

    如果是奇数那么就只好输出0 0了

    不过这样的做法显然是大费周章了。

    书上是这样分析这个问题的:

    这个问题可以描述成任给一个正整数N,如果N是奇数,输出0 0,否则如果N是4的倍数,输出N/4 N/2,如果N不是4的倍数,输出N/4+1 N/2。这是一个一般性的计算题,

    只要实现相应的判断和输出代码就可以了。题目中说明了输入整数在一个较小的范围之内,所以只需要考虑整数运算就可以了。

    代码自然是简单的- -

    智商自然是捉急的- -

    书上的解决方法显然更加的具有‘大局观’

    //http://www.cnblogs.com/xdblog/p/5451306.html
    #include<iostream>
    #include<stdio.h>
    int main()
    {
        int nNumber;
        int nFeet;
        scanf("%d", &nNumber);
        for(int i = 0; i < nNumber; i++){
            scanf("%d", &nFeet);
            if(nFeet%2 != 0)          //如果出现奇数 输出0 0
            {
                printf("0 0
    ");
            }else if(nFeet%4 == 0){  //如果能被4整除
                printf("%d %d
    ", nFeet/4, nFeet/2);
            }else{                      //不能被4整除  说明多出两只脚
                printf("%d %d
    ", nFeet/4+1, nFeet/2);
            }
    
        }
    
        return 0;
    }
  • 相关阅读:
    java09 队列Queue与Deque
    java08 Set
    java07 map
    SNMP学习
    NPM
    windows主机资源Snmp OIDs CPU, Memory, Disk等
    servlet3.0 @webfilter 过滤顺序
    snmp v3的安全配置 snmp认证与加密配置(53)
    CentOS 7.2 (mini) 里iptables防火墙怎么关闭?
    ORA-00845 MEMORY_TARGET not supported on this system 的解决
  • 原文地址:https://www.cnblogs.com/xdblog/p/5451306.html
Copyright © 2020-2023  润新知