您的位置:首页 > 其它

1965: [Ahoi2005]SHUFFLE 洗牌 - BZOJ

2014-05-22 21:08 393 查看
Description

var
n,m,l,x,y:int64;

function f(x,y:int64):int64;
begin
if y=0 then exit(1);
f:=f(x,y>>1);
f:=f*f mod(n+1);
if y and 1=1 then f:=f*x mod(n+1);
end;

procedure extended(a,b:int64);
var
t:int64;
begin
if b=0 then
begin
l:=l div a;
exit;
end;
extended(b,a mod b);
t:=x;
x:=y;
y:=t-(a div b)*y;
end;

procedure main;
begin
read(n,m,l);
m:=f(2,m);
x:=1;
y:=0;
extended(m,n+1);
x:=x*l;
x:=x-trunc(x/(n+1))*(n+1);
x:=(x+n+1)mod(n+1);
writeln(x);
end;

begin
main;
end.


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: