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)所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    CSS笔记
    如何使用YSLOW提高网站性能
    字符串查找子串
    判断一个数是不是回文数
    将一个输入的数字颠倒(例如输入12345>54321)
    输出100以内的质数
    删除一个字符串中的子串
    最大公共子串
    把VS2008九十天试用版本升级成正式版的办法
    关于main函数的返回值认识
  • 原文地址:https://www.cnblogs.com/BrainDeveloper/p/2300279.html
Copyright © 2011-2022 走看看