题解 | 约瑟夫环 不用公式,暴力遍历
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
#include <iostream>
#include<vector>
using namespace std;
int main() {
int n,k,m;
cin>>n>>k>>m;
vector<int>a(n,1);
int remain=n;
int q=0;
//外层循环用来寻找还未被踢出的样本,到m之后把它踢出去
while(remain>1)
{
int i=0;
//内层循环用来遍历数组,找出未被踢出去的样本
while(true)
{
if(a[(k+q)%n]==1)
{
i++;
if(i==m)
{
a[(k+q)%n]=0;
break;
}
}
q++;
}
q++;
remain--;
}
int w;
for(int i=0;i<n;i++)
{
if(a[i]==1)
w=i;
}
cout<<w;
}
