2037:【例5.4】约瑟夫问题
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 562 通过数: 294
【题目描述】
NN个人围成一圈,从第一个人开始报数,数到MM的人出圈;再由下一个人开始报数,数到MM的人出圈;…输出依次出圈的人的编号。
【输入】
输入NN和MM。
【输出】
输出一行,依次出圈的人的编号。
【输入样例】
8 5
【输出样例】
5 2 8 7 1 4 6 3
【提示】
【数据范围】
对于所有数据,2≤N,M≤10002≤N,M≤1000。
【参考代码】
#include<stdio.h> #define N 110 int a[N]; int main() { int i,n,m,f=0,t=0,s=0; scanf("%d%d",&n,&m); do { t++; if(t==n+1) t=1; if(a[t]==0) s++; if(s==m) { s=0; printf("%d ",t); a[t]=1; f++; } }while(f!=n); return 0; }