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

原创 2015年07月10日 09:45:49

题目描述

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.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java数组模拟链表解决约瑟夫问题

本篇文章参考《啊哈!算法》 一、如何模拟? 链表的每个结点中只包含一个指针域,叫做单链表,即构成链表的每个结点只有一个指向直接后继结点的指针 每个节点的结构 对于存放以上的结构,需要完成两个部分。 ...

约瑟夫环问题的两种解决方式(递归求解和数组模拟求解)

约瑟夫环问题各位Acmer肯定都遇到过,就是给你编号为从0~n-1的n个人,从头开始报数,报到m的人离场,问最后留下的人是几号。有两种方法解决这个问题 第一种:数组模拟 这种方法没什么好说的,就是模拟...

约瑟夫问题的数组实现

约瑟夫问题的数组解法

约瑟夫问题的数组、动态链、静态链解法。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)