#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)
,只做第一个我,不做第二个谁。