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)

     

  • 相关阅读:
    Java实现第八届蓝桥杯纸牌三角形
    Java实现第八届蓝桥杯9算数式
    Java实现第八届蓝桥杯方格分割
    java实现第七届蓝桥杯压缩变换
    java实现第七届蓝桥杯压缩变换
    MyCat 主键ID自增长配置
    mycat快速体验(转)
    Mycat常见问题与解决方案---宜将剩勇追穷寇,不可沽名学霸王
    Mycat快速入门
    Mycat入门教程
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/15751776.html
Copyright © 2011-2022 走看看