早教吧作业答案频道 -->其他-->
pascal N只猴子选大王 恩 程序尽量简单.初学者水平N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的
题目详情
pascal N只猴子选大王 恩 程序尽量简单.初学者水平
N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下的两只猴子时,取这时报数报1的为王.若想当猴王,请问当初应占据什么位置?
例如:输入猴子最初的只数N:10
输出想当猴王当初应占据的位置:8
N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下的两只猴子时,取这时报数报1的为王.若想当猴王,请问当初应占据什么位置?
例如:输入猴子最初的只数N:10
输出想当猴王当初应占据的位置:8
▼优质解答
答案和解析
var
q:array[1..1000] of integer;// 循环队列
b,e,c:integer;
n:integer;
i:integer;
procedure add(x:integer);
begin
inc(e);
if e >= 1000 then e:=1;
q[e]:=x;
inc(e);
end;
function del():integer;
begin
inc(b);
if b >= 1000 then b:=1;
del:=q[b];
dec(c);
end;
begin
readln(n);
for i:= 1 to n do
add(i);
while c > 2 do
begin
add(del); // 报 1
add(del); // 报 2
del; // 报 3 的退出
end;
// 此时只剩两只猴子
writeln(del);
end.
q:array[1..1000] of integer;// 循环队列
b,e,c:integer;
n:integer;
i:integer;
procedure add(x:integer);
begin
inc(e);
if e >= 1000 then e:=1;
q[e]:=x;
inc(e);
end;
function del():integer;
begin
inc(b);
if b >= 1000 then b:=1;
del:=q[b];
dec(c);
end;
begin
readln(n);
for i:= 1 to n do
add(i);
while c > 2 do
begin
add(del); // 报 1
add(del); // 报 2
del; // 报 3 的退出
end;
// 此时只剩两只猴子
writeln(del);
end.
看了 pascal N只猴子选大王...的网友还看了以下:
编写程序求解下述韩信点兵问题:有一对士兵,从1至5依次报数时,最后1人报1,;从1至6依次报数时, 2020-06-04 …
甲乙丙三位同学进行报数游戏,游戏规则为:甲报1,乙报2,丙报3,甲报4,乙报5,丙报6,…依次循环 2020-07-08 …
1.某报亭买进某种日报的价格是每份0.30元,卖出的价格是每份0.50元.卖不出的报纸可按每份0.1 2020-11-03 …
50个运动员站成一排进行‘1’‘2’报数,第一次报完后,所有报‘1’的运动员离开队伍,剩下的运动员继 2020-11-08 …
有100个人排成一排,从左往右1至3报数,凡报到3的留下,其余离开队伍,第二次在留下的学生中再1至3 2020-11-17 …
c语言编程题,有一队士兵送1-5依次报数时,最后一个人报1,从1-6报数时,最后一个人报5,从1-7 2020-11-17 …
16个小朋友,依次编为1-16号,围成一个圈,从某个小朋友开始顺时针1-3报数,报道3退出游戏,余下 2020-11-17 …
一100名同学按照编号1至100从左往右顺次排成一行,然后“1、2”报数到最后一人,凡报“1”的就出 2020-11-24 …
谁能教我一道数学题100名同学按照编号1~100从左往右顺次排成一行,然后“1、2”报数到最后一人, 2020-11-24 …
一道数学思考题100名同学按照1至100从左往右顺次排成一行,然后“1、2”报数到最后一人,凡报“1 2020-11-24 …