free passcal 猴子选大王

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:02:09

有M只猴子围成一圈,每只各一个从1到M中的编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到N的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M、N,编程计算哪一个编号的猴子成为大王

#i nclude<iostream.h>

int choose(int num,int del)
{
int i;
int a[100];
for(i=0;i<num;i++)
a[i]=1; //猴子状态初始化,为1表示可能被选上,为0表明没希望了;

int sum=0, //循环记数;
countOne=num; //累积记数初始化,大于1表明还有大王候选人;

while(countOne>1)
{
countOne=0;
for(i=0;i<num;i++)
{
sum+=a[i];
if(sum==del)
sum=a[i]=0; //淘汰倒霉猴子;
countOne+=a[i];
}
}

for(i=0;i<num;i++)
if(a[i]!=0)
return i; //找到幸运猴子编号(从0开始的);
}

void main()
{
int num,del;
cout<<"请输入猴子总数和淘汰数:";
cin>>num>>del;
cout<<"第"<<choose(num,del)+1<<"个猴子为王!"<<endl;
}

program fdsk;
var
i,j,k,n:integer;
a:array[1..9999]of integer;
be