返回列表 发帖

[有奖问答]MS的一道面试题~

圆圈上顺时针排列着1,2,3,....2000 这2000个数. 从1开始,顺时针隔一个拿走一个(1最先被拿走,下一个是3被拿走). 问最后剩下是哪一个数字. (不许编程)

[有奖问答]MS的一道面试题~

? 不懂

TOP

[有奖问答]MS的一道面试题~

[ADMINOPE=chinanic|x86|奖励积分 20|参回问答活动~!|1170097993]应该是1952吧。
我是这样想的:
1-2000个数 第一次拿走1000个数, 剩余1000个数,把这1000个数依次编号为1-1000,
再继续算1-1000,拿走500个数,把剩余的编为1-500
这样重复算10次就有答案了。
结果是这样的:
1-2000  1
1-1000  2
1-500   4
1-250   8
1-125   16
1-62    32
1-31    32
1-16    32
1-8     160
1-4     416
1-2     928
1-1     1952[br][br]-=-=-=- 以下内容由 x862007年01月28日 08:36pm 时添加 -=-=-=-
还有一个更方便的方法:
假设有N个数字,
最后一个取的数字L应该等于
2^x < N
这里的x为小于N的2的最大次幂,如2000,这个x就是10,2^10 = 1024;
再拿2000 - 1024 = 976;
最后L = 976 * 2 = 1952;

TOP

[有奖问答]MS的一道面试题~

1,3,5,...,2n-1,..,1999             1000/1000
2,6,10,..,2(2n-1),...,1998      500/500
4,12,.4(2n-1),1996,250/250
8,24,40,8(2n-1),125/125
16,48,80,16(2n-1),1984 63/62
32,96,160,32(2n-1),1952,1962 31/31

1952^_^[br][br]-=-=-=- 以下内容由 chinanic2007年01月30日 03:15am 时添加 -=-=-=-
本题结束!
由于各种原因未能参加的朋友请继续关注下次活动~!

TOP

返回列表 回复 发帖