https://www.luogu.org/problem/show?pid=1996
题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
输入样例#1:
10 3
输出样例#1:
3 6 9 2 7 1 8 5 10 4
说明
你猜,你猜,你猜猜猜……
猜不着吧,我也不告诉你!!!
简单的模拟
#include<bits/stdc++.h>
using namespace std;
int n,m,i,a[101],t,s,e,b[101];
int main()
{
cin>>n>>m;
while(t<n)
{
i=0;
while(1)
{
s=(s+1)%n;
if(s==0) s=n;
if(a[s]==0)
i++;
if(i==m)
{
t++;b[t]=s,a[s]=1;break;
}
}
}
for(i=1;i<=n;i++)
cout<<b[i]<<" ";
}