模拟选猴王
Posted jrx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟选猴王相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<stdlib.h>
int aloop[310];
int main(){
int n,m,i;
while(1){
scanf("%d%d",&n,&m);
if(n==0)
break;
for(i=0;i<n;i++){//编号
aloop[i]=i+1;
}
int nptr=0;
for(i=0;i<n;i++){//每次循环将一个猴子赶出去
int ncounter=0;
while(ncounter<m){//数m个猴子
while(aloop[nptr]==0)//跳过数过的猴子
nptr=(nptr+1)%n;//跳到下一位
ncounter++;
nptr=(nptr+1)%n;//跳到下一位
}
nptr--;//五个手指四个缝隙,数m只猴子,跳m-1下,要回退一位
if(nptr<0){
nptr=n-1;//当nptr=0时回退会变为负数
}
if(i==n-1)
printf("%d\\n",aloop[nptr]);//输出猴王的编号
aloop[nptr]=0;//应该跳过的猴子
}
}
}
以上是关于模拟选猴王的主要内容,如果未能解决你的问题,请参考以下文章