题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
输入样例#1:
10 3
输出样例#1:
3 6 9 2 7 1 8 5 10 4
思路:
此题的重点在于将数字连成一个环,并判处被排除的数字,是一个纯搜索的过程。
#include<iostream>
using namespace std;
int a[
10000],m,n;
int main()
{
cin>>n>>
m;
int t=
0,s=
0,f=
0;
do{
s++
;
if(s==n+
1)s=
1;
if(a[s]==
0)
t++
;
if(t==
m){
t=
0;
a[s]=
1;
cout<<s<<
' ';
f++
;
}
}while(f!=
n);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-671666.html