#C03L02P05. C03.L02.约瑟夫问题.例题2.约瑟夫问题
C03.L02.约瑟夫问题.例题2.约瑟夫问题
题目描述
有 n 个人,其编号分别为 1~n。按顺序围成一个圈,现在给定一个数 m,从第一个人开始依次报数,报到 m 的人出圈,然后再从下一个人开始,继续从 1 开始依次报数,报到 m 的人再出圈,... 如此循环,直到最后一个人出圈为止。
编程输出所有人出圈的顺序。
输入格式
一行两个正整数 n 和 m,之间用一个空格隔开,1 ≤ n < 100,1 ≤ m ≤ 32767 。
输出格式
输出 n 行,每行一个正整数,表示依次出圈的人的编号。
样例
8 5
5
2
8
7
1
4
6
3
程序填空
#include<iostream>
using namespace std;
bool a[101];
main(){
int n,m;
int num=0,i,cnt=0;
cin>>n>>m;
for(i=1;num<n;i++) //num是出圈的总人数
{
if(i==n+1)
填空(1) ;
if(a[i])
填空(2) ;
填空(3) ;
if(cnt== 填空(4) && !a[i] )
{
printf("%d\n",i);
a[i] = true;
cnt = 0;
填空(5) ;
}
}
return 0;
}
填空(1) {{ input(1) }}
填空(2) {{ input(2) }}
填空(3) {{ input(3) }}
填空(4) {{ input(4) }}
填空(5) {{ input(5) }}
相关
在以下作业中: