早教吧 育儿知识 作业答案 考试题库 百科 知识分享

有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,

题目详情
有N只猴子选大王,选举的办法是:排成一排,从头到尾报数,报到3的倍数(3、6、9、……)的退出去,直到全部报完,然后从尾到头开始逆向报数,同样报3的倍数的退出.第三遍又是从头到尾进行,第四遍又从尾到头,直到最后余下两只,以排在后面(按报数的顺序)的那只为猴王.请编程序找出猴王的位置.(N从键盘输入)(用PASCAL)
▼优质解答
答案和解析
这个是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);
}
}
看了 有N只猴子选大王,选举的办法...的网友还看了以下:

/*3、约瑟夫问题约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始  2020-05-17 …

麻烦大家帮我算个概率比0-9十个数,选3次,每次选一个数,选完后对下次没有影响.请问选到质数235  2020-06-03 …

英语翻译根据你之前发的退货数据,我司分别对这些型号产品进行了分析,得出以下结论.1.根据12年8月  2020-06-17 …

处于巅峰状态时选择退役的那个成语是?就比如一个运动员,在拿到奥运冠军活全满贯后,马上选择退役,  2020-07-21 …

2015个同学站成一排报数,报到奇数的退出,偶数的留下,留下的同学位置不动重新报数,报到奇数的退,偶  2020-11-10 …

有150个学生,选出一个来当.方法是:150个学生排成一排,从左到右报数.奇数的退出,偶数的留下,留  2020-11-17 …

2010个同学站成一排报数,报到奇数的退出,偶数的留下,留下的同学位置不动重新报数,报到奇数的退出,  2020-12-31 …

有2011个同学站成一排报数,报到奇数的退下,偶数的留下,留下的同学位置不动继续报数,报到奇数的退下  2020-12-31 …

从20个优秀学生中选1人去参加国际交流活动选取方法是将20人站成一排,报数,报奇数的同学落选并退出队  2021-01-02 …

从20个优秀学生中选1人去参加国际交流活动选取方法是将20人站成一排,报数,报奇数的同学落选并退出队  2021-01-02 …