c++猫和老鼠问题
答案:2 悬赏:60 手机版
解决时间 2021-04-11 17:13
- 提问者网友:骑士
- 2021-04-11 09:11
现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。
最佳答案
- 五星知识达人网友:酒安江南
- 2021-04-11 09:36
设N为老鼠数目,L为那只幸运老鼠的位置
2^x | N
--------------------------------
2^0 | 2
2^1 | 3 4
2^2 | 5 6 7 8
2^3 | 9 10 11 12 13 14 15 16
.....................................
上面2^x 中x表示第x行,2^x表示该行有多少个数,这些数就是N,比如N=12,相应的N在第3行 即2^x < N <= 2^(x+1)
所以,log(2,N)-1<= x < log(2,N) 且x 为int型
最后公式为: L= (N-2^x)*2
也就是说,找到一个最大的x使得2的x次最接近切小于N,然后套用公式L就是那个值
至于程序怎么写,我想不用多说了吧?毕竟还是学过C语言的吧。
全部回答
- 1楼网友:患得患失的劫
- 2021-04-11 10:51
#include <stdio.h> int EatMouse(int num)
{ int i; if(num<1) return 0; if(num==1) return 1; for(i=1;i<num;i+=i) return i/2; } void main(){ int num; printf("Num of mouse:\t"); scanf("%d",&num); printf("Mouse left:\t%d\n",EatMouse(num)); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯