大牛说这是约瑟夫问题。。。递推公式是:令f[i]表示i个人玩游戏报m退出最后胜利者的编号,最后的结果自然是f[n]
递推公式
f[1]=0;
f[i]=(f[i-1]+m)%i; (i>1)
我还没想太明白。。。回头再解释。。。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n,m,i,j,k,t,flag;
while(scanf("%d",&n),n){
flag=1;
i=1;
while(flag){
m=0;
i++;
for(j=2;j<n;j++)
m=(m+i)%j;
if(m==0) flag=0;
}
printf("%d\n",i);
}
// system("pause");
return 0;
}