有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/28 16:41:06
![有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,](/uploads/image/z/10188270-54-0.jpg?t=%E6%9C%89N%E5%8F%AA%E7%8C%B4%E5%AD%90%E9%80%89%E5%A4%A7%E7%8E%8B%2C%E9%80%89%E4%B8%BE%E7%9A%84%E5%8A%9E%E6%B3%95%E6%98%AF%EF%BC%9A%E6%8E%92%E6%88%90%E4%B8%80%E6%8E%92%2C%E4%BB%8E%E5%A4%B4%E5%88%B0%E5%B0%BE%E6%8A%A5%E6%95%B0%2C%E6%8A%A5%E5%88%B03%E7%9A%84%E5%80%8D%E6%95%B0%EF%BC%883%E3%80%816%E3%80%819%E3%80%81%E2%80%A6%E2%80%A6%EF%BC%89%E7%9A%84%E9%80%80%E5%87%BA%E5%8E%BB%2C%E7%9B%B4%E5%88%B0%E5%85%A8%E9%83%A8%E6%8A%A5%E5%AE%8C%2C%E7%84%B6%E5%90%8E%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E5%BC%80%E5%A7%8B%E9%80%86%E5%90%91%E6%8A%A5%E6%95%B0%2C%E5%90%8C%E6%A0%B7%E6%8A%A53%E7%9A%84%E5%80%8D%E6%95%B0%E7%9A%84%E9%80%80%E5%87%BA.%E7%AC%AC%E4%B8%89%E9%81%8D%E5%8F%88%E6%98%AF%E4%BB%8E%E5%A4%B4%E5%88%B0%E5%B0%BE%E8%BF%9B%E8%A1%8C%2C)
有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,
有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,第四遍又从尾到头,直到最后余下两只,以排在后面(按报数的顺序)的那只为猴王.请编程序找出猴王的位置.(N从键盘输入)(用PASCAL)
有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,
这个是C语言编写,
题目是输入两个正整数 n 和 m( (1data=x;
r=p->next;
q->next=r;
p->next=q;
}
void delect(Position p){// delect the element after p
PtrToNode tmp;
tmp=p->next;
p->next=tmp->next;
free(tmp);
}
void MakeList(List *L,int n){//make the list
int i;
Position p=L;
for(i=1;inext;
}
}
void main()
{
int i,j,n,m;
Position p,q,r;
List L;
double duration;
while(scanf("%d%d",&n,&m)!=EOF){//input the number to slect
if(n>MAX){
printf("The number is too large!\n");
continue;
}
init(&L);//initilze the list
MakeList(L,n);//make the list
start = clock();
q=p=L->next;// p and q are the first position of the list
for(i=0;inext; // r is the position of the element we select
if(r==NULL)r=q;
if(i!=n-1)printf("No%d:%d\n",i+1,r->data);//print the element
else printf("Last No is:%d\n",r->data);
if(p->next==NULL){
delect(L);
q=L->next;//delect the position of p->next
}
else delect(p);
p=p->next;
if(p==NULL)p=q;
}
stop = clock();
duration = ((double)(stop - start))/CLK_TCK;
printf("The time is %f\n",duration);
}
}
什么意思嘛,说清楚一点,我也觉得会打起来。不现实
猴子打起来
只会打起来