题目大意:
有给定的N个人,主角编号13,求最小的报数序号M,使得主角为赢家。
报数序列为1,M%N这样.. 1是第一个出去的
网上看的数学方法,各种感觉不爽!
觉得算法中最神奇的就是2分和递归了。美妙!
数学分析过程网上都有,不解释了。
#include<iostream>
using namespace std;int find( int n,int m )
{int s=0;for( int i=2;i<=n;i++ )s=(s+m)%i;return s+1;
}int main()
{int n;int ans[111];memset( ans,0,sizeof(ans) );for( int i=1;i<100;i++ )for( int j=1;;j++ ){if( find(i-1,j)==12 ){ans[i]=j;break;}}while( scanf("%d",&n)!=EOF&&n ){printf( "%d\n",ans[n] );}return 0;
}