题目:http://poj.org/problem?id=3517
参考文章:约瑟夫环百度百科:http://baike.baidu.com/view/717633.htm
注:这里的编号都是从0到n-1的。
n是总人数,k是报k的人出列,m-1是第一个出列的人,接着从m开始报数。
总的来说,就是递推,将m-1出列后,转化为n-1人,从0报数的情况。
源代码:
#include <stdio.h>
int n,k,m;
int f;
int main()
{
freopen("D:\\a.txt","r",stdin);
while(1){
scanf("%d %d %d",&n,&k,&m);
if(!n&&!k&&!m) break;
f=0;
for(int i=2;i<=n-1;i++)
f=(f+k)%i;
f=(f+m)%n;
printf("%d\n",f+1);
}
}