15 条题解
-
0hzk LV 8 @ 2010-03-09 15:50:40
(n+1)(n-1)可以过一个数据.. 什么原理啊- -
-
02009-11-05 12:29:26@
尽管我觉得这道题有问题,我试了m=10,发现是20次,而程序输出60
http://forum.noi.cn/frame.php?frameon=yes&referer=http%3A//forum.noi.cn/thread-27035-1-1.html
我现在不完全归纳出应需2×m次,这和上面的网址模拟出的是一样的
再好好想想,我觉得至少能递推,然后求通项公式
附程序program p1056;
var m:int64;
function solve(m:int64):int64;
var i,t,d: longint;
flag: Boolean;
begin
if (m = 1) then
solve :=2
else begin
d := 2*m+1; t := 2;
i := 1; flag := False;
repeat
if (t = 1) then
begin
solve :=i*m; flag := True;
end
else if (t=2*m) then
begin
solve := i*m-1; flag := True;
end
else
t:=(t*2) mod d;
i:=i+1;
until flag;
end
end;
begin
read(m);
writeln(solve(m));
end. -
02009-10-05 10:01:52@
置换群?郁闷.....
打表找规律果然是王道..... -
02009-08-16 17:41:58@
估计数据改过了..现在不需要高精度了
来讲讲做法:
首先打表发现一个规律:ans mod m=m-1 or 0
令c(x,i)为做x次以后i这个位置是被原来的什么位置替代,f(x)为做x次以后,c(x,i)所组成的序列,比如说M=5,x=5时,c(x,1)=5,c(x,2)=3,c(x,3)=1,c(x,4)=2,c(x,5)=4.f(x)={5,3,1,2,4}.
再令d(x)表示做x次以后每个硬币的正反情况(1表示反,0表示正),比如m=5,x=5时,d(x)={11100}.
然后我们发现,f(ans)要么是一个递增序列,要么是一个递降序列,且对于任意的1 -
02009-07-19 20:31:23@
简单的一个置换群
f[i]-->f[i]/2 mod (2m+1)
相反的为
f[i]:=f[i]*2 mod (2m+1)不懂的可以在硬币的反面立一个镜子
附主函数:
function find(m:longint):longint;
var
i,t,d:longint;
begin
if m=1 then exit(2);
d:=m shl 1+1;
t:=2;
i:=1;
while true do begin
if t=1 then exit(i*m);
if t=m shl 1 then exit(i*m-1);
t:=t shl 1 mod d;
inc(i);
end;
end;Orz那些用直接模拟AC的神牛
-
02009-06-20 21:23:21@
var i:integer;aa,bb:array[1..50000] of integer;a,b,c,d,sum:longint;
begin
readln(a);
b:=b+1;sum:=sum+1;for i:=1 to b do if aa[i]=0 then bb[i]:=1 else bb[i]:=0;
for i:=b downto 1 do begin d:=d+1; aa[i]:=bb[d]; end;
for i:=1 to a do if aa[i]=0 then c:=c+1;
while ca do
begin
b:=b+1;sum:=sum+1;d:=0;
for i:=1 to b do if aa[i]=0 then bb[i]:=1 else bb[i]:=0;
for i:=b downto 1 do begin d:=d+1; aa[i]:=bb[d]; end;
if b=a then b:=0;
c:=0;
for i:=1 to a do if aa[i]=0 then c:=c+1;
end;
writeln(sum);
end.为什么会超时啊???有没有规律啊!
-
02009-06-10 00:14:06@
绝对高精度
-
02009-05-05 18:36:42@
m要开到60000
-
02009-04-23 16:12:55@
数据超范围!!!
-
02009-04-20 23:15:52@
这题我以前写过一个拿动规写的算法,结果过了9个点,最后一个点超时一点点,估计放到VIJOS能过,有空我发到OIBH上。
-
02009-02-25 21:50:23@
想法是通过位运算来猥琐的模拟
-
02009-02-21 16:57:53@
高精度版翻硬币………………
-
02009-02-11 18:18:13@
m什么时候改成50000的?
-
02009-02-09 16:53:20@
模拟可以过,不过要加点优化,应该还有更好的方法!
-
02009-02-09 15:19:51@
题目好象有点问题俄。。
- 1