0引言
根据蓝桥杯的猴怪吃桃问题的求解。
1问题描述
森林里有一只熊怪,很爱吃核桃。不过它有个习惯,每次都把找到的核桃分成相等的两份,吃掉一份,留一份。
如果不能等分,熊怪就会扔掉一个核桃再分。第二天再继续这个过程,直到最后剩一个核桃了,直接丢掉。
有一天,熊怪发现了1543个核桃,请问,它在吃这些核桃的过程中,一共要丢掉多少个核桃。
请填写该数字(一个整数),不要填写任何多余的内容或说明文字
2算法描述
解题思路:首先根据题意可得这是一个有规律的求解,所以这时我们应该想到运用循环和判断的求解,如果能等分(偶数)则分成两份, 如果不能(奇数)则减一再循环。通过ans = 0,的定义则可在奇数的地方进行加一,最终得出丢去的核桃。
3实验结果与讨论
通过编程最终求出了猴怪吃桃的问题。
附件
代码清单 猴怪吃桃
n = 1543 ans = 0 while n > 0: if n % 2 == 0: n = n / 2 else: n = n - 1 ans = ans + 1 print(ans) |
4结语
熊怪吃桃是道非常经典循环判断题,通过简单的条件判断则可求出结果。
收录于合集 #python
195个
上一篇利用倒序和find()来找出待查找字符的最大下标下一篇Python类的定义与使用