《程序设计引导和在线实践》例题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\n");
        }else if(nFeet%4 == 0){  //如果能被4整除
            printf("%d %d\n", nFeet/4, nFeet/2);
        }else{                      //不能被4整除  说明多出两只脚
            printf("%d %d\n", nFeet/4+1, nFeet/2);
        }

    }

    return 0;
}
时间: 2024-10-11 20:54:13

《程序设计引导和在线实践》例题2.1鸡兔同笼问题的相关文章

程序设计导引及在线实践 读书笔记2.1 —— 鸡兔同笼

http://blog.csdn.net/pipisorry/article/details/36433305 问题描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外).已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物. 输入 第1行是测试数据的组数n,后面跟着n行输入.每组测试数据占1行,每行一个正整数a (a < 32768) 输出 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开

读书-算法《程序设计导引及在线实践》-简单计算题2:棋盘上的距离

题目:棋盘上的距离 求国际象棋中王.后.车.象从起始位置到目标位置所需的最少步骤. 行走规则如下: 王:横.竖.斜都可以走,但每步只能走一格. 后:横.竖.斜都可以走,但每步格数不限. 车:横.竖都可以走,不能斜着走,每步格数不限. 象:只能斜着走,格数不限. 我没有下过国际象棋,但题目中这四种角色的行走规则.把题目翻译一下,在一个8*8 的矩阵里面,按照给定的规则从一个点到另一个点的最近路径,好像也不用翻译,题目就是这么说的. 代码实现如下: #include <stdio.h> #incl

C/C++算法竞赛入门经典Page9 例题1-4 鸡兔同笼

题目:鸡和兔总数:n,总腿数:m.输入n,m,输出鸡和兔分别的数量;无解则输出"No answer" 样例输出1: 14 32 样例输出1: 12 2 样例输入2: 10 16 样例输出2: No answer 首先,声明两个变量n,m对应总数和总腿数;再声明两个变量为鸡和兔各自的数量a,b 1 int n,m,a,b; 输入n,m: scanf("%d%d",&n,&m); 通过联立方程组: a+b=n 2a+4b=m 得: a=(4n-m)/2;

uSurvival 1.41多人在线生存逃杀吃鸡类游戏源码

uSurvival - the new Multiplayer Survival Asset from the creator of uMMORPG. Features:* Kill Zombies with an Axe* MMO Scale Networking via Mirror & Telepathy -> [ Same Scripts for Client & Server ] -> [ Rubberband Movement ] -> [ Item Use/

《程序设计技术》课程辅助学习资料

本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定一个坚实的基础. 自己编写程序也是学习编程必不可少的一个环节.自己编写是否正确可以通过OJ系统来验证.选做OJ的程序设计题方便于评价自己所写的程序是否正确.想要提高编写程序的能力并且达到更高的水平,从各个OJ中选做一些编程题是十分必要的. 文中提供了CCF-CSP认证考试历年 试题的第1题的题解.这些题解中都

C++学习(一)——基本程序设计

1.首先练习鸡兔同笼问题: 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b,x,y; 6 cout << "请输入鸡和兔的总数:"; 7 cin >> a; 8 cout << "请输入鸡和兔的总脚数:"; 9 cin >> b; 10 x = (4 * a - b) / 2; 11 y = (b - 2 * a

1.4 分支结构程序设计

例题 1-4 鸡兔同笼 已知鸡和兔的总数量为n, 总腿数为m.输入 n 和 m,依次输出鸡的数目和兔的数目.如果无解,输出No answer 样例输入: 14 32 样例输出: 12 2 样例输入: 10 16 样例输出: No answer [分析] 简单的数学问题,设鸡的数量为a, 兔的数量为b.则 a+b = n, 2*a + 4*b = m;联立方程组 a=(4n - m)/2, b=n-a:结合实际a,b的值必须是非负整,而且 m 必为偶数. 程序 1-11 鸡兔同笼 1 #inclu

C程序设计实验报告

C程序设计实验报告 C程序设计实验报告  试验项目:基本的程序语句实验.程序的简单算法设计实验  姓名:陈建清   实验地点:物联网工程实验室   实验时间:2019.03.19 一.实验目的与要求   1.了解字符在计算机中以ASCII码方式表示,了解字符的类型.字长其数的表示范围.  2.掌握C语言数据类型,熟练掌握变量定义:  3.使用scanf()输入变量的值,使用printf()输出变量:  4.掌握运算符与表达式的使用方法及其优先级和结合性规律. 5.巩固对算法概念的理解,掌握运算符

C语言程序设计实验报告(二)

C程序设计实验报告 实验项目:2-3-3字符与ASCII码:2-3-4运算符与表达式的应用:2-3-5顺序结构应用程序:3-3-1数学函数的算法描述:3-3-2鸡兔同笼的算法描述:3-3-3确定坐标的算法描述 姓名:彭佳乐 实验地点:家 实验时间:2020.3.12 一.实验目的与要求 1.掌握自增++,自增--运算符的正确使用. 2.掌握基本的输入/输出函数的基本功能.调用方法.输入/输出格式控制规定等. 3.掌握结构化程序的算法描述方法. 4.熟练掌握C语言的运算符,即运算符的优先级和结核性