早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal约瑟夫n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好

题目详情
pascal约瑟夫
n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。
现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好人开始数数。
你要确定一个最小的m,使得在第一个好人被杀死前,k个坏人先被杀死。
输入
一个k,0输出
一个m
样例:
joseph.in
3
joseph.out
5
另一个样例:
joseph.in
4
joseph.out
30
务必在程序后加一些必要说明,感谢!
▼优质解答
答案和解析
给你更好理解的。
这是筛法
var
n,m,i,s,p:integer;
a:array[1..10000] of integer;
begin
read(n,m);//这步不用说了吧?
for i:=1 to n do
a[i]:=1;//先全部赋值1
p:=0;s:=0;//统计人数和报数字用的
repeat
for i:=1 to n do
begin
if a[i]=0
then continue; //用于等会排除出圈者
s:=s+a[i];//不断累加(报数字)
if s=m then//出圈者
begin
write(i,' ');打印出圈者;
a[i]:=0;//明白刚才continue的意思了吧
p:=p+1;//人数减少一个;
s:=0;//重头报起。
end;
end;
until p=n;//直到人数到了
end。
其实呢,筛法的原理就是:
(1)先统一初始化,一般用for。可以赋值0,1,true,false。
(2) 在数组范围内,根据条件筛选,不符合条件的做反标记。
(3)输出结果。根据标记值输出。
所以,一般需要三个循环
看了pascal约瑟夫n个人站成一...的网友还看了以下:

梦到好多的菩萨还有不知道是什么佛.昨天晚上梦到我家的上空突然发亮,然后就看到天空有好多的菩萨还有我  2020-05-17 …

工程问题如何列方程我遇到工程问题就蒙,然后找不到等量关系,现在都需要列方程,然后就搞不懂,稍微拐点  2020-06-03 …

中考英语作文抄袭阅读也不算抄袭,阅读题说的是一个志愿者,看到赛跑者都决定明年也参加比赛,然后就参加  2020-06-10 …

有个小男孩住在山里想到外面去然后就砍树砍出了一条路然后村里人也这么做砍树卖钱,然后树砍光了男孩就找  2020-06-19 …

教你生病①“到外面去打的,然后到医院.先挂号,记住,要买一个本……”我说.“什么本?”他不解.“就  2020-06-22 …

电动车60负改72负后电压表表不准,电瓶没电时突然表就到低了,听朋友说要加电阻,求解?  2020-07-04 …

英语翻译我的暑假生活这个暑假我们去了百里峡,我们早晨7:00挤上了火车.我们在火车上和一个朋友交谈  2020-07-11 …

我想找一个表格、例如要有秦朝时的政治、经济、文化.然后就到汉朝的政治、经济、文化以此类推等(注意是  2020-07-28 …

某班同学在就“人与自然的关系”进行讨论时各抒己见。下列说法不正确的是[]A.善待大自然,大自然就会善  2020-12-30 …

一项“澳大利亚幸福指数”调查显示:澳洲偏僻地区的居民虽然在就业率、收入水平等方面落后于他人,可在对生  2021-01-02 …