一道关于杀狼的算法题
在一个森林里,有一群狼。因为这群狼的数量过多,现在决定大规模杀狼。目标是,把这群狼杀到刚好剩42只为止。
但是,杀的方法有些讲究。
如果说,这群狼一共有 n 只,那么:
·如果n是偶数,那么可以杀掉一半的狼
·如果n可以被3并且/或者4整除,那可以把n的最后两位数字 的乘积的这个数字设为 a,杀掉a只狼(这里可能没说清楚,没关系,后面有例子)
·如果n可以被5整除,那么可以杀掉42只狼。
一个例子:
开始有250只狼
·250可以被5整除,所以我们可以用250 - 42 还剩下208只狼
·208是偶数,所以可以杀掉一半,还剩104只狼
·104是偶数,所以可以再一次杀掉一半,还剩52只狼
·52可以被4整除,用52的最后两位数字,5和2,相乘。 得出,5 * 2 = 10,用52 - 10 刚好等于42
通过这种方式,就能刚好让这群狼剩下42只
写一个程序,输入一群狼最开始的数量,让程序回答,是否能杀到刚好剩42只。
(换句话说,有些输入数据,是肯定不能杀到剩42只的)
为了方便测试,给两个例子:
多少只狼? 7762
不能达到目标
多少只狼? 7461
可以达到目标
一些个人的浅见:
应该是用回溯算法比较方便吧。。。本人水平太差,还用不好这种算法,大家看看吧。
当然,这题并没有要求具体用哪种算法。
[ 本帖最后由 vdestroyer 于 2009-11-7 02:34 编辑 ]