现在主要在知乎,地址:https://www.zhihu.com/people/qqrrm
老的文章在:http://blog.csdn.net/pyp
一道好玩的题(ruby)
上一篇 /
下一篇 2011-12-26 17:51:36
/ 个人分类:ruby
原文在http://www.cnblogs.com/BrainDeveloper/archive/2011/12/24/2300279.html
有N个数,编号1到n。按照以下规则进行删除数,求最后剩下的那个数。【1<= n <= 1000000000】
规则:
1 . 如果当前序列的个数大于1,则删除所有序列中第平方数的位置的数。
2. 将进行1操作剩下的数,重新排在一起,重复操作1,直接当前序列数为1个数时,这个数就是结果。
#coding:utf-8
NUM =99999 #最大值
a = (1..NUM).to_a
def value(arr) #去除平方位置的数
for i in 1..Math.sqrt(NUM)
arr[i*i-1] = nil
end
return arr.compact!
end
n = Time.now
until a.length == 1 #算是递归吧
value(a)
end
p Time.new-n
p a
收藏
举报
TAG:
Ruby
ruby