zoukankan      html  css  js  c++  java
  • python百炼成钢实例080猴子分桃

    题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

    程序解析:

    假设最后一只猴子拿走后还剩下sum_peach 4N,拿桃子前5N+1, 则 sum_peach = sum_peach/4 *5 +1

    那再上一只猴子拿走后还剩下sum_peach 也是 4N,拿桃子前是 sum_peach = sum_peach/4 *5 +1
     依次累积到第一只猴子拿,也是sum_peach 也是 4N,拿桃子前是 sum_peach = sum_peach/4 *5 +1
    隐藏条件是N为整数,sum_peach/4 *5 +1 能被4整除

    程序:

    """"
    海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,
    这只猴子把多的一个扔入海中,拿走了一份。
    第二只猴子把剩下的桃子又平均分成五份,又多了一个,
    它同样把多的一个扔入海中,拿走了一份,
    第三、第四、第五只猴子都是这样做的,
    问海滩上原来最少有多少个桃子?
    """
    # 假设最后一只猴子拿走后还剩下sum_peach  4N,拿桃子前5N+1, 则 sum_peach = sum_peach/4  *5  +1
    # 那再上一只猴子拿走后还剩下sum_peach 也是 4N,拿桃子前是  sum_peach = sum_peach/4  *5  +1
    # 依次累积到第一只猴子拿,也是sum_peach 也是 4N,拿桃子前是  sum_peach = sum_peach/4  *5  +1
    # 隐藏条件是N为整数,sum_peach/4  *5  +1 能被4整除
    
    num_monkey = 0 # 倒数第几个猴子
    last_num_peach = 1 # 最后分的桃子个数,假设为1个
    sum_peach = 0 # 桃子个数
    
    # while循环,直到累计到5只猴子,结束循环,否则一直循环,直到for循环累计到五只猴子
    # for 累计五只猴子,j变化,每次丢桃子前x都是4的倍数,则上一次桃子有 x/4 *5 +1
    
    while num_monkey<6:
        sum_peach = 4 * last_num_peach  # 最后一只猴子拿走后还剩下的桃子
        for num_monkey in range(1,6):
            if(sum_peach%4 !=0):
                break  # 不能被整除,说明假设的last_num_peach不成立,跳出for循环,while循环继续,last_num_peach往上继续累加推测
            else:
                num_monkey=num_monkey+1
            sum_peach = sum_peach/4 * 5 +1  #最后一只猴子拿走后还剩下sum_peach  4N,拿桃子前5N+1, 则 sum_peach = sum_peach/4  *5  +1
        last_num_peach = last_num_peach+1 #假设最后的桃子数不能被4整除了,则说明最后剩下的不为last_num_peach,则加1,直到所有sum_peach都能被4整除
    print(sum_peach)

     

  • 相关阅读:
    数据恢复基础知识
    Url传递中文终极解决办法
    用来实现Web页面图片移动托拽的代码段
    FAT文件系统原理
    SQL数据库恢复技术
    使用Ghost错选恢复分区后
    全手工数据恢复
    C#class的Dispose和Finalize模板
    SQL语句 嵌套查询
    逻辑数据库设计 无视约束(谈外键)
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/15751776.html
Copyright © 2011-2022 走看看