pascal编程
选猴王题目描述有M个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:第一轮抽出N作为出圈密码,然后从第一只从1号开始报数...
选猴王
题目描述
有M个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:第一轮抽出N作为出圈密码,然后从第一只从1号开始报数,报到N的猴子出圈;第二轮以上次出圈的猴子编号作为出圈密码,继续从1开始报数,到密码出圈;如此反复,最后剩下来一只猴子的就是大王。
要求:输入M,N,编程计算哪一个编号的猴子成为大王。
输入格式
一行:两个整数m,n. 0<m<1000,1<=n<=m
输出格式
一行:一个整数
样例输入
10 2
样例输出
1 展开
题目描述
有M个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:第一轮抽出N作为出圈密码,然后从第一只从1号开始报数,报到N的猴子出圈;第二轮以上次出圈的猴子编号作为出圈密码,继续从1开始报数,到密码出圈;如此反复,最后剩下来一只猴子的就是大王。
要求:输入M,N,编程计算哪一个编号的猴子成为大王。
输入格式
一行:两个整数m,n. 0<m<1000,1<=n<=m
输出格式
一行:一个整数
样例输入
10 2
样例输出
1 展开
1个回答
展开全部
{
选猴王
题目描述
有n个猴子围成一圈,每个有一个编号,编号从1到n。打算从中选出一个大王
。经过协商,决定选大王的规则如下:第一轮抽出m作为出圈密码,然后从第一只
从1号开始报数,报到m的猴子出圈;第二轮以上次出圈的猴子编号作为出圈密码,
继续从1开始报数,到密码出圈;如此反复,最后剩下来一只猴子的就是大王。
要求:输入n,m,编程计算哪一个编号的猴子成为大王。
输入格式
一行:两个整数n,m. 0<n<1000,1<=m<=n
输出格式
一行:一个整数
样例输入
10 2
样例输出
1
}
var
a:array[1..5000] of integer;
i,j,k,m,n,num:integer;
begin
readln(n,m);
for i:=1 to 5000 do a[i]:=-1;
for i:=1 to n do a[i]:=i;
k:=0;{递增计数器}
j:=0;{数组下标}
num:=n;
repeat
inc(j);
if j=n+1 then j:=1;
if a[j]<>-1 then k:=k+1;
if (k mod m=0)and(a[j]<>-1) then begin
write(a[j]:4);
m:=a[j]; {*************}
k:=0; {*************}
a[j]:=-1;
num:=num-1;
end;
until num=0;
writeln;
end.
选猴王
题目描述
有n个猴子围成一圈,每个有一个编号,编号从1到n。打算从中选出一个大王
。经过协商,决定选大王的规则如下:第一轮抽出m作为出圈密码,然后从第一只
从1号开始报数,报到m的猴子出圈;第二轮以上次出圈的猴子编号作为出圈密码,
继续从1开始报数,到密码出圈;如此反复,最后剩下来一只猴子的就是大王。
要求:输入n,m,编程计算哪一个编号的猴子成为大王。
输入格式
一行:两个整数n,m. 0<n<1000,1<=m<=n
输出格式
一行:一个整数
样例输入
10 2
样例输出
1
}
var
a:array[1..5000] of integer;
i,j,k,m,n,num:integer;
begin
readln(n,m);
for i:=1 to 5000 do a[i]:=-1;
for i:=1 to n do a[i]:=i;
k:=0;{递增计数器}
j:=0;{数组下标}
num:=n;
repeat
inc(j);
if j=n+1 then j:=1;
if a[j]<>-1 then k:=k+1;
if (k mod m=0)and(a[j]<>-1) then begin
write(a[j]:4);
m:=a[j]; {*************}
k:=0; {*************}
a[j]:=-1;
num:=num-1;
end;
until num=0;
writeln;
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询