bzoj1965

时间:2023-03-10 03:41:11
bzoj1965

很明显,求方程x*2^m=L (mod n+1)的解(1<=x<=n)

 var n,m,l,x,y,p:int64;
function quick(x:int64):int64;
var j:int64;
begin
j:=; quick:=;
while x> do
begin
if x mod = then quick:=quick*j mod p;
x:=x div ;
j:=j*j mod p;
end;
end; procedure exgcd(a,b:int64;var x,y:int64);
var xx,yy:int64;
begin
if b= then
begin
x:=;
y:=;
end
else begin
exgcd(b,a mod b,xx,yy);
x:=yy;
y:=xx-(a div b)*yy;
end;
end; begin
readln(n,m,l);
p:=n+;
m:=quick(m);
exgcd(m,p,x,y);
x:=(x+p) mod p;
writeln(qword(x)*qword(l) mod p);
end.