1 /* 功能Function Description: POJ-2244 约瑟夫问题 2 开发环境Environment: DEV C++ 4.9.9.1 3 技术特点Technique: 4 版本Version: 5 作者Author: 可笑痴狂 6 日期Date: 20120801 7 备注Notes: 8 题意: 9 编号为1到n,一号先出去,然后向后数第m个人再出去,求最小的m值时期最后剩余的是2号 10 问题转化----直接把一号去掉,把2号到n号改为0号到n-2号来求最后剩余的是0号的最小m值 11 */ 12 13 #include<stdio.h> 14 int main() 15 { 16 int n,i,j; 17 int f[155]; 18 while(scanf("%d",&n),n) 19 { 20 f[1]=0; 21 for(i=2;;++i)//依次从报到2的人出去向后枚举 22 { 23 24 for(j=2;j<=n-1;++j) 25 f[j]=(f[j-1]+i)%j; 26 if(f[n-1]==0) 27 { 28 printf("%d\n",i); 29 break; 30 } 31 } 32 } 33 return 0; 34 }