约瑟夫环(纯数学方法)
直接上代码
#include <stdio.h> void fun(int n,int m) { int p[10000] ; int i ,j ,t ; for(i=0;i<n;i++) p[i] = i+1 ; //对全体进行编号 t = 0 ; printf("出队顺序如下\n") ; for(i=n;i>=1;i--) { t = (t+m-1)%i ; //循环公式 printf("%d ",p[t]) ; for(j = t+1;j<=i-1;j++) p[j-1] = p[j] ; } printf("\n") ; } int main() { printf("输入人数n和出队编号m\n") ; int n, m ; scanf("%d%d",&n,&m) ; fun(n,m) ; return 0 ; }