26757:循环链表练习 分数: 100
2015-07-10 09:45
162 查看
题目描述
有n只猴子,按顺时针方向围成一圈(开始时编号为1,2,……n),选大王。从第1号猴子开始报数1,2,3……,数到m号时该猴子退出到圈外,如此报数直到圈内只剩下一只猴子时,此猴便是大王。你的任务是从键盘读入n,m,程序判断输出最后的大王是几号?
输入格式
输入一行,n,m分别表示猴子数量和报的数
输出
输出选出的大王
样例输入
5 3
样例输出
4
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.
有n只猴子,按顺时针方向围成一圈(开始时编号为1,2,……n),选大王。从第1号猴子开始报数1,2,3……,数到m号时该猴子退出到圈外,如此报数直到圈内只剩下一只猴子时,此猴便是大王。你的任务是从键盘读入n,m,程序判断输出最后的大王是几号?
输入格式
输入一行,n,m分别表示猴子数量和报的数
输出
输出选出的大王
样例输入
5 3
样例输出
4
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.
相关文章推荐
- 4851:【一维数组】约瑟夫问题 分数: 3
- 【转载】有序拆分
- 【转载】中缀变后缀
- 【转载】后缀表达式求值
- 2015年01月25日
- 2015年01月25日
- 2015年01月25日
- 2015年01月25日
- 26751:线性链表的建立及逆序输出 分数: 100
- 4858:二维数组输出(2) 分数: 2
- 4857:二维数组输出(1) 分数: 1
- 26750:线性链表建立及正序输出 分数: 100
- 1023:坑爹的黑店 分数: 1
- 26749:指针练习 分数: 100
- 指针
- 4817:【一维数组】元素求和 分数: 1
- 4820:【一维数组】排序后的奇数项 分数:
- 1025:统计硬币 分数: 1
- 4849:符合条件的数 分数: 3
- 查看数据库服务各数据库备份状态