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
展开
 我来答
gcbjoy
2014-10-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:92%
帮助的人:2160万
展开全部
{
选猴王 

题目描述
有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.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式