Board logo

标题: [有奖问答]MS的一道面试题~ [打印本页]

作者: chinanic    时间: 2007-1-28 10:14     标题: [有奖问答]MS的一道面试题~

圆圈上顺时针排列着1,2,3,....2000 这2000个数. 从1开始,顺时针隔一个拿走一个(1最先被拿走,下一个是3被拿走). 问最后剩下是哪一个数字. (不许编程)
作者: adman    时间: 2007-1-28 10:18     标题: [有奖问答]MS的一道面试题~

? 不懂
作者: x86    时间: 2007-1-28 15:54     标题: [有奖问答]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;

作者: chinanic    时间: 2007-1-30 03:12     标题: [有奖问答]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 时添加 -=-=-=-
本题结束!
由于各种原因未能参加的朋友请继续关注下次活动~!




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2