P1996 P1563 模拟
P1996 约瑟夫问题
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main( ){
int n;
scanf("%d",&n);
int m;
scanf("%d",&m);
bool vis[n+2];
for(int j=1;j<=n;j++){
vis[j]=1;
}
//memset(vis,0,sizeof(vis))
int now=0,i=1,g=n;
while(g>0){
if(i>n) i-=n;
if(vis[i]==1){
now++;
if(now==m){
vis[i]=0;
printf("%d ",i);
g--;
now=0;
}
}//有人
i++;
}
return 0;
} #include <cstdio>