zoukankan      html  css  js  c++  java
  • 一道挺好玩的题,可用来作面试题【来自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)所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    状态机
    折半查找函数
    宽字符与多字符相互转换
    安装交叉编译工具
    make menuconfig提示'make menuconfig' requires the ncurses libraries.
    IIC总线
    关于文字编码
    傅里叶变换
    韦东山视频_第27课_dma设备驱动程序
    linux内核宏之——-PERF_ALIGN
  • 原文地址:https://www.cnblogs.com/BrainDeveloper/p/2300279.html
Copyright © 2011-2022 走看看