#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) }}