题解

30 条题解

  • 0
    @ 2009-06-28 11:02:37

    核心代码如下:

      h:=1;

      while not odd(m) do

      begin

        m:=m div 2;

        h:=h+1;

      end;

      writeln(h);

    需要高精

  • 0
    @ 2009-06-27 16:27:17

    好简单

    数列是1,2,1,3,1,2,1,4,1,2,1,3,1,1,5.......

    首先,可以发现奇数位是1,那么我们把所有1去掉:

    2,3,2,4,2,3,2,5....是不是和原来的很像呢,只是奇数位变成了2,把2去掉。。

    3,4,3,5,3,4,3,6........也是一样的。。。。

    所以捏,本题使用高精度除法就完了。。。。。

  • 0
    @ 2009-07-02 10:38:49

    连我这种傻X都觉得是水题。

    那个比我更菜的出题者要证明,那我就写一下。

    第一个显然是1,第二个显然是2;

    对于已经有的一个序列,在后面接一个与原序列等长的序列时,不能与原序列一样,又要最小,所以只能在最后一个数加1;

    于是一直进行上面一步,就构造了满足题意的一个无限序列。

    所以是输出转成二进制后末尾0的个数+1。

    PS:BS楼下!

  • 0
    @ 2009-07-20 08:29:41

    题号   P2009

    类型(?)   水题

    通过   1.3E+9人

    提交   0次

    通过率   infinity%

    难度   -infinity

  • 0
    @ 2009-06-27 14:36:52

    找规律。

  • 0
    @ 2009-06-28 21:56:53

    偶明白这道题了。

    1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 5 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 6 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 5 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 7……

    单数输出1.

    2的倍数输出2

    4的倍数输出3

    8的倍数输出4

    16的倍数输出5

    32的倍数输出6

    64的倍数输出7

    128的倍数输出8

    ……

    输出大者优先。

    所以可以得出,只需要将m不断div 2,直到它mod 2=1是所进行的次数就是所求的h。

  • 0
    @ 2009-06-27 15:01:51

    ......

  • 0
    @ 2009-06-27 13:12:07

    1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 5 1 2 1 3 1 2 1 4 1 2 1 3 1 2

    貌似是这么排的~

  • 0
    @ 2009-08-06 17:21:00

    找规律吧 高精度吧

  • 0
    @ 2009-06-27 12:42:52

    我觉得需要适当地用数学方法和高级数据结构来优化

信息

ID
1558
难度
4
分类
其他 | 数学 点击显示
标签
(无)
递交数
423
已通过
168
通过率
40%
被复制
2
上传者