• 一道挺好玩的题,可用来作面试题【来自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)所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    <转>浅谈DNS体系结构:DNS系列之一
    SOA和NS区别
    《浅析各类DDoS攻击放大技术》
    《转》DNS放大攻击
    Linux创建公钥
    MATLAB 中有哪些命令,让人相见恨晚
    SQL中的declare用法
    SQl server 附加数据库失败如何解决
    VS中代码对齐等快捷键
    C#窗口控件Dock的位置顺序调整方法
  • 原文地址:https://www.cnblogs.com/BrainDeveloper/p/2300279.html
Copyright © 2020-2023  润新知