永发信息网

c++猫和老鼠问题

答案:2  悬赏:60  手机版
解决时间 2021-04-11 17:13
现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。
最佳答案

设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语言的吧。

全部回答

#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)); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我用手机上QQ,密码明明是10位的,而且都输对
我很喜欢唱歌,但是每当面对很多人唱歌时都会
我是1988年农历11月19日七点出生的,请问属于
为什么现在别人家QQ农场好友都说不要有校友的
大家搞设计觉得应该保持那种状态?
天津的美食有哪些,河北保定美食有哪些?
中国机械工业集团中国电器科学研究院地址在哪
呼伦贝尔哪个旅行社好一点?
在□÷31=12并且还有余数的算式中,□里最大
火车上让吃零食吗?垃圾怎么处理?
平顶山市那里回收PSP2000
晚上洗头 马上用吹风机吹干行不行
吉林酒水代理的个体营业执照怎么办理?
单选题不是文化景观的基本特性的是A.文化景观
战地4盗版联机
推荐资讯
施乐400复印机出现C4-3是怎么了
诺基亚5230和5800I哪个好
日文我喜欢你怎么发音,日语 我喜欢你 怎么说
大梁永红鸡丁米线馆地址有知道的么?有点事想
There is no doubt those who work hard wil
上课经常发呆,该怎么办?
小学语文上第一单元从第几课到第几课
风采汇美屋地址在哪,我要去那里办事
诺基亚5320无缘无故的没有信号能上网不能接打
木柜招了虫怎么办?
如何培养小学生学习数学的兴趣呢
怎样用用短信充Q币
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?