n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到m的时候

#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)

,只做第一个我,不做第二个谁。

n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到m的时候

相关文章:

你感兴趣的文章:

标签云: