#include <iostream>
int yuesefu(int n,int m)
{ int i,r=0;
for(i=1;i<n;i++)
r=(r+m)%(n-i+1);
return r+1;
}
void main()
{
int n=5,m=2;
int j;
j=yuesefu(n,m);
printf("%d",j);
}
分析:目标是算出来第n-1次被踢出去的人的下一个人!
第一次被踢出去的人的下一个人应该是:
A1=m%n+1
第二次被踢出去的人的下一个人应该是:
A2=(A1+m)%(n-1)
同理
A3=(A2+m)%(n-2)
统一的公式是:
Ak=(A[k-1]+m)%(n-k+1)