一道挺好玩的题,可用来作面试题【来自20111224 Topcoder DIVI 250题】
一道挺好玩的题,可用来作面试题【来自20111224 Topcoder DIVI 250题】
有N个数,编号1到n。按照以下规则进行删除数,求最后剩下的那个数。【1<= n <= 1000000000】
规则:
1 . 如果当前序列的个数大于1,则删除所有序列中第平方数的位置的数。
2. 将进行1操作剩下的数,重新排在一起,重复操作1,直接当前序列数为1个数时,这个数就是结果。
例子: 如果现在是10个数
1 2 3 4 5 6 7 8 9 10 第一次删除 1 、4、9
=>2 3 5 6 7 8 10 第二次删除 2、6两个数,因为他们的位置是第1、4个数。
=>3 5 7 8 10 第三次删除 3、8两个数,原因同上。
=>5 7 10 第四次删除 5 这个数。
=>7 10
=> 10
这样最后的数就是10,就是要求的结果。
再给几个例子:
n = 6时,结果是 5.
n = 8 时,结果 是 7
n = 9 时,结果是 7
n = 20111223时,结果是 20110741
我觉得这个题有点意思,可以思考思考~
稍后会给出一个较好的参考答案思路。
【转载请注出处】
作者:Jason Cai
出处:http://www.cnblogs.com/BrainDeveloper/
本文版权归作者(Jason Cai)所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/BrainDeveloper/
本文版权归作者(Jason Cai)所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。