Tubor Pascal编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:19:03
猴子选大王:有N只猴子围成一圈选大王,从第1个猴子开始报数,数到K的猴子出圈,在由下一个猴子开始报数,数到K的猴子出圈,……最后一个出圈的就是大王。比如,N=8,K=6,一次出圈的为6、4、3、5、8、7、2、1。
输出样例:
8 6 两个正整数,表示N和K的值
输出样例:
1 一个整数表示大王的编号
按照上面的运行样例编写程序:

刚才的程序有点错误,修改之后如下:
program ex;
var
a:array[1..1000] of byte; {标记数组,标记猴子是否淘汰}
n,k,s,i,j:longint; {s为计数器}
begin
fillchar(a,sizeof(a),0); {初始化}
readln(n,k);
s:=0; j:=0;
repeat
for i:=1 to k do j:=j div n+1; {模拟报数}
s:=s+1; a[j]:=1;
until n-s=1;
for i:=1 to n do if a[i]=1 then write(j);
readln
end.

var n,m,j,i,k,s:integer;a:array[1..20] of integer;
begin
readln(n,m);
j:=n;k:=1;
for i:=1 to n do a[i]:=1;
while j>1 do
begin
s:=s+a[k];
inc(k);
if (s mod m=0) and (s<>0) then begin a [k1]:=0;j:=j-1;s:=0;end;
if k>n then k:=1;
end;
for i:=1 to n do if a[i]<>0 then writeln(i);
end.

有M只猴子围成一圈,每只各一个从1到M中的编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到N的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M、N,编程计算哪一个编号的猴子成为大王

#i nclude<iostream.h>

int choose(int num,int del)
{
int i;
int