30 条题解
-
0laiqidong LV 9 @ 2009-06-28 11:02:37
核心代码如下:
h:=1;
while not odd(m) do
begin
m:=m div 2;
h:=h+1;
end;
writeln(h);
需要高精 -
02009-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........也是一样的。。。。
所以捏,本题使用高精度除法就完了。。。。。 -
02009-07-02 10:38:49@
连我这种傻X都觉得是水题。
那个比我更菜的出题者要证明,那我就写一下。
第一个显然是1,第二个显然是2;
对于已经有的一个序列,在后面接一个与原序列等长的序列时,不能与原序列一样,又要最小,所以只能在最后一个数加1;
于是一直进行上面一步,就构造了满足题意的一个无限序列。
所以是输出转成二进制后末尾0的个数+1。
PS:BS楼下! -
02009-07-20 08:29:41@
题号 P2009
类型(?) 水题
通过 1.3E+9人
提交 0次
通过率 infinity%
难度 -infinity -
02009-06-27 14:36:52@
找规律。
-
02009-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。 -
02009-06-27 15:01:51@
......
-
02009-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
貌似是这么排的~
-
02009-08-06 17:21:00@
找规律吧 高精度吧
-
02009-06-27 12:42:52@
我觉得需要适当地用数学方法和高级数据结构来优化