题目表述:
本游戏是来自于求解约瑟夫环问题的衍生,游戏规则是:编号为1~N的N个人按顺时针方向围坐一圈,每个人持有一个密码(正整数,可以自由输入),开始任选一个正整数作为报数上限值M,从第一个人按照顺时针方向自1开始顺序报数,报到M时停止报数。报M的人出列,将他的密码作为新的上限值M,从他顺时针方向的下一个人开始从1报数,如此下去,直至所有人出列为止。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,q=0,sum=0;
//sum用来记录出列的人数;q用来记录报数
int M,N;
//M为上限值;N为人数;
int f;
scanf("%d%d",&M,&N);
int a[N][2];
for(i=0;i<N;i++){
a[i][0]=i+1;//放1->N编号
scanf("%d",&a[i][1]);}//放入每个人对应的密码
while(sum!=N){
//当每个人都出列了就可以跳出循环了
f=N-sum;
M=M%f;
//用求模来缩小M——为了减少循环次数
//注意人出列后