4851:【一维数组】约瑟夫问题 分数: 3


题目描述

N个人围成一圈,从第一个开始报数,第M个将被杀掉,再由下一个人开始重新报数,直到最后剩下一个人。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。


输入格式

两个正整数N和M。


输出

剩下的最后一个人的编号。


样例输入

6 5


样例输出

1
program p4851;

var a,b,c,d,n,m:integer;
admin:array[1..10000] of integer;
begin
b:=0;
read(n,m);
for a:=1 to n do
admin[a]:=a;
b:=m;
for a:=1 to n-1 do
begin
admin[b]:=0;
while c<m do begin
b:=b+1;
if b>n then
b:=b mod n;
if admin[b]>0
then c:=c+1;
end;c:=0;
end;
for a:=1 to n do if admin[a]>0 then writeln(a);
end.

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jing1223639316/article/details/46826619
个人分类: 编程
上一篇【转载】有序拆分
下一篇26757:循环链表练习 分数: 100
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭