Python解决鸡兔同笼问题的方法

本文实例讲述了Python解决鸡兔同笼问题的方法,分享给大家供大家参考。具体分析如下:

问题描述

一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。已经知道了笼 子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物

输入数据

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

输出要求

n 行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是 最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出 2 个 0。

输入样例

2
3
20
输出样例
0 0
5 10

解题思路:

首先考虑特殊情况,当a为奇数时,结果都为0
其次考虑偶数:
假设鸡 i只, 兔j只, 那么a=2*i+4*j
我们要求 i+j的最小和最大值
易知 i+j=(a-2j)/2 当j越大 i+j越小 当j越小 i+j越大
当然我们也可以简单的用权重值来思考,而不需要去想具体的计算过程

python实现如下:


代码如下:

n=input()
l=list()
for k in range(n):
    inputNum=input()
    #odd
    if inputNum%2!=0:
        min=max=0
    else:
    #even
    #min
        j=inputNum/4
        i=inputNum%4/2
        min=i+j
    #max
        max=inputNum/2
    l+=[(min,max)]
   
for a,b in l:
    print a,b

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • Python列表计数及插入实例

    本文实例讲述了Python列表计数及插入的用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: word=['a','b','c','d','e','f','g']//首个元素为元素0,word[0]=a   a=[num1:num2]                                     //从num1到num2的元素(不包括元素num2)     //若为负数,则代表倒数第几个 在对list进行操作时,append 追加,word.append(elements)

  • Python二维码生成库qrcode安装和使用示例

    二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave公司于 1994 年发明.现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询.社交好友互动.网络地址访问等等. 安装 Python 的二维码库 -- qrcode 由于生成 qrcode 图片需要依赖 Python 的图像库,所以需要先安装 Python 图像库 PIL(Python Imaging Library),不然会遇到 "ImportE

  • 利用Python的装饰器解决Bottle框架中用户验证问题

    首先来分析下需求,web程序后台需要认证,后台页面包含多个页面,最普通的方法就是为每个url添加认证,但是这样就需要每个每个绑定url的后台函数都需要添加类似或者相同的代码,但是这样做代码就过度冗余,而且不利于扩展. 接下来我们先不谈及装饰器,我们都知道Python是个很强大的语言,她可以将函数当做参数传递给函数,最简单的: def p(): print 'Hello,world' def funcfactor(func): print 'calling function named', fun

  • Python解决鸡兔同笼问题的方法

    本文实例讲述了Python解决鸡兔同笼问题的方法,分享给大家供大家参考.具体分析如下: 问题描述 一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外).已经知道了笼 子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第 1 行是测试数据的组数 n,后面跟着 n 行输入.每组测试数据占 1 行,包括一个正整 数 a (a < 32768). 输出要求 n 行,每行输出对应一个输入.输出是两个正整数,第一个是最少的动物数,第二个是 最多的动物数,两个正整数

  • Java使用for循环解决经典的鸡兔同笼问题示例

    本文实例讲述了Java使用for循环解决经典的鸡兔同笼问题.分享给大家供大家参考,具体如下: for循环经典,鸡兔同笼问题 问题:鸡兔同笼,鸡兔一共35只.笼子里脚一共94只,请问分别有多少只鸡和兔? 思路:首先明确思路,鸡的数量*2加上兔子的数量*4等于脚的总数94,这是一个关键点, 代码很简单,但是关键的条件却要花很多时间去找,要是不明白的真的是很烦啊. 利用for循环列举出所有可能直到if满足条件, 列出表达式 鸡*2 加 兔*4 等于 脚总数94 ,这是if的判断条件,满足就可以直接输出

  • Java for循环的妙用之鸡兔同笼问题

    题目描述 已知鸡的数量为n只,兔的数量为m只,鸡兔的总头数为H个鸡兔的总脚数为Y只 for循环语法 for(表达式1:表达式2:表达式3 ){  //循环体  } // 表达式1为赋值语句. 作用:为为循环变量赋初始值: 表达式2为条件语句. 作用:是循环结构的循环条件 表达式3为赋值语句(通常用++或–). 作用:用开修改循环变量的值 解题思路 我们已知鸡的数量为n,兔的数量为m.即 H=n+m,Y=2*n+4*m. 因为不知道鸡和兔的数量,那么我们先假设鸡的数量为1,然后用for循环寻其于兔

  • Python解决N阶台阶走法问题的方法分析

    本文实例讲述了Python解决N阶台阶走法问题的方法.分享给大家供大家参考,具体如下: 题目:一栋楼有N阶楼梯,兔子每次可以跳1.2或3阶,问一共有多少种走法? Afanty的分析: 遇到这种求规律的问题,自己动动手推推就好,1阶有几种走法?2阶有几种走法?3阶有几种走法?4阶有几种走法?5阶有几种走法? 对吧,规律出来了! 易错点:这不是组合问题,因为第1次走1阶.第2次走2阶不同于 第1次走2阶.第2次走1阶 下面是Python的递归实现代码: def allMethods(stairs):

  • Python解决线性代数问题之矩阵的初等变换方法

    定义一个矩阵初等行变换的类 class rowTransformation(): array = ([[],[]]) def __init__(self,array): self.array = array def __mul__(self, other): pass # 交换矩阵的两行 def exchange_two_lines(self,x,y): a = self.array[x-1:x].copy() self.array[x-1:x] = self.array[y-1:y] self

  • Python解决多进程间访问效率低的方法总结

    目录 前言 使用进程间Queue效率问题场景 采用管道模式解决 总结 前言 最近在解决一些算法优化的问题,为了实时性要求,必须精益求精的将资源利用率用到极致.同时对算法中一些处理进行多线程或者多进程处理. 在对代码的调试过程中,发现在进程间队列使用耗时很长,特别是图片这种比较大的数据的时候. 可以先看一下我下面的demo是不是符合你的场景. 下面还有我的解决方案. 使用进程间Queue效率问题场景 代码样例如下,模拟从两个视频读取图片帧进行处理. #!/user/bin/env python #

  • python解决Fedora解压zip时中文乱码的方法

    前言 很多时候在windows下压缩文件没问题,但是到了Linux下,出现乱码,很常见.以前在Ubuntu下,用`unzip -O GBK filename.zip` 就可以搞定. 换了Fedora后,暂时没发现乱码的压缩文件.晚上下载一本书的光盘,又碰到了乱码.尝试之前的方法没成功.看了下unzip的help,没-O那个参数了== 刚好找到一个用python解决的办法,分享下. 新建一个`.py`后缀的文件,直接复制粘贴代码: #!/usr/bin/env python # -*- codin

  • Python解决抛小球问题 求小球下落经历的距离之和示例

    本文实例讲述了Python解决抛小球问题 求小球下落经历的距离之和.分享给大家供大家参考,具体如下: 问题: 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果 测试样例: 100,90,80,70 返回:1020 实现代码: class Balls: def calcDistance(s

  • python解决pandas处理缺失值为空字符串的问题

    踩坑记录: 用pandas来做csv的缺失值处理时候发现奇怪BUG,就是excel打开csv文件,明明有的格子没有任何东西,当然,我就想到用pandas的dropna()或者fillna()来处理缺失值. 但是pandas读取csv文件后发现那个空的地方isnull()竟然是false,就是说那个地方有东西... 后来经过排查发现看似什么都没有的地方有空字符串,故pandas认为那儿不是缺失值,所以就不能用dropna()或者fillna()来处理. 解决思路:先用正则将空格匹配出来,然后全部替

  • Python解决八皇后问题示例

    本文实例讲述了Python解决八皇后问题的方法.分享给大家供大家参考,具体如下: 八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上.八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2.而且仅当 n2 = 1 或 n1 ≥ 3 时问题有解. 这是一个典型的回溯算法,我们可以将问题进行分解: 首先,我们要想到某种方

随机推荐