就是数组枚举罢了, 有8个人,每5个人就出局,做下来就行了
1 2 3 4 5 6 7 8
1 2 3 4 5 |5出局。
6 7 8 1 2 |2出局。
3 4 6 7 8 |8出局。
1 3 4 6 7 |7出局。
1 3 4 6 1 |1出局。
3 4 6 3 4 |4出局。
3 6 3 6 3 |6出局。
3 3 3 3 3 |3出局。
结果而5 2 8 7 1 4 6 3。
两个问题
第一,怎么判断已经出局了?
很简单,你只要把出局的人设为0。
第二,越界怎么办?
1.很简单,搞一个变量tot,加到n+1时-n,或%n都可以。
代码
#include<bits/stdc++.h>
using namespace std;
int a[1000100],n,m,i,sum,tot,shu;
int main() {
cin>>n>>m;
for(i=0;i<n;i++)a[i]=i+1;
while(sum<n){
if(a[shu]!=0)tot++;
if(tot==m){
cout<<a[shu]<<' ';
a[shu]=0;sum++;tot=0;
}
shu++;
if(shu==n)shu=0;
}
}