狼找兔子
时间限制: 10000ms内存限制: 1024kB
描述
一座山周围有n个洞,顺时针编号为0,1,2,...n-1.
而一只狼从0号洞开始,顺时针方向计数,每遇到m个洞就进洞找兔子.例如n=5,m=3,狼经过的洞依次为0,3,1,4,2,0.那么兔子有没有幸免的机会?如果有,该藏在哪儿?
时间限制: 10000ms内存限制: 1024kB
描述
一座山周围有n个洞,顺时针编号为0,1,2,...n-1.
而一只狼从0号洞开始,顺时针方向计数,每遇到m个洞就进洞找兔子.例如n=5,m=3,狼经过的洞依次为0,3,1,4,2,0.那么兔子有没有幸免的机会?如果有,该藏在哪儿?
输入
n m (<2.1*10^9)
输出
若兔子有幸免的机会则输出所有可以藏身的洞,输出洞的个数,反之,输出-1。
样例输入
5 1
样例输出
-1
参考代码
program psj004;
var
n,m,v:LongInt;
function max(a,b:LongInt):LongInt;
begin
begin
if a > b then
max := a
else
max := b
end;
end;
function min(a,b:LongInt):LongInt;
begin
begin
if a > b then
min := b
else
min := a
end;
end;
function gcd(a,b:LongInt):LongInt;
var
mx,mn,mm:LongInt;
begin
mx := max(a,b);
mn := min(a,b);
mm := mx mod mn;
begin
if mm = 0 then
gcd := mn
else
gcd := gcd(mm,mn)
end;
end;
begin
readln(n,m);
v := n - n div gcd(n,m);
begin
if v = 0 then
writeln(-1)
else
writeln(v)
end;
end.
探讨一个有趣的算法问题:狼在n个洞中按规律寻找兔子,兔子如何选择藏身洞穴才能避免被找到。通过数学方法求解兔子安全藏身的洞穴数量。
807

被折叠的 条评论
为什么被折叠?



