1~M个人,围成一个圈,轮流报数,报到S的人出列,按顺序输出出列的人的编号

来源:百度知道 编辑:UC知道 时间:2024/06/23 05:31:07
用编程求解,不要太深奥
最好用tuber pascal语言

program ex11;
var
f:Array[1..100] of boolean;
n,m,s,t,p:integer;
procedure init;
begin
readln(n,m);
end;
procedure main;
begin
fillchar(f,sizeof(f),true);
repeat
if s<>n then inc(s)
else s:=1;
if f[s] then inc(t);
if t=m then
begin
inc(p);
f[s]:=false;
writeln(s);
t:=0;
end;
until p=n;
end;
begin
init;
main;
end.

/*
约瑟夫问题
这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,
必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依
次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止
*/

#include<iostream>
using namespace std;

void main() {
int i, j, k = 1, a[31]; // M = 30
for(i = 0; i <= 30; i++) a[i] = 0;
for(i = 1; i <= 15; i++){
for(j = 1; j <

1~M个人,围成一个圈,轮流报数,报到S的人出列,按顺序输出出列的人的编号 10个人站成一个圈的排列方式有几种? 甲已两人轮流报1-10中的任意一个数,把自己报的数加起来,谁累加的和先达到100,谁就获胜,怎样确保胜利 输入n个正整数(代表n个人),围成一圈,按1,2,3报数,报到3的人跳出。问最后一个留在圈中的人是谁 公务员报名现在有2个职位 一个是招1个现在有34个人报 一个是12个人现在有64个人报 有M个人围成一圈,每人一个的编号(1. 一把枪里装1颗子弹,然后两个人轮流打的那种叫什么游戏?? n个人围成一圈,从第m个人开始顺序报号,凡报到p的人退出圈子,输出依次退出圈子的人来的序号 两人轮流按次序报自然数,每人每次可以报1—3个自然数,谁先报到2007,谁就获胜。试分析获胜的策略。 有9条线段分别长1m,2m,3m,4m,5m,6m,7m,8m,9m;从中取出若干条,顺次连接,围成一个正方形,问有多少种取法