Who is the last? 时间限制1000 ms 内存限制65536 KB 题目描述 There are N people, numbered from 1 to N, sitting around in a circle. Counted from the NO.1,the M th people should leave the game.Then,from the next one,the counting loop will go on. After several loops, there will be only on guy left. Writing a program to calculate who is the last people.
#include<stdio.h>#include<stdlib.h>struct Node;typedefstruct Node *ptrtoNode;typedef ptrtoNode position;typedef position Head;struct Node
{int x;
position next;};intmain(){
Head head =malloc(sizeof(struct Node));
head->next =NULL;
head->x =1;
position pLast = head;int N, M;scanf("%d",&N);getchar();scanf("%d",&M);int i;if(N ==0){for(i =1; i < N; i++){printf("%d,", i);}printf("%d", i);}else{for(i =2; i <= N; i++){
position pnew =malloc(sizeof(struct Node));
pnew->x = i;
pLast->next = pnew;
pnew->next = head;
pLast = pnew;}int nowPeople = N;
position p = head;while(nowPeople >1){for(i =1; i <= M -1; i++){
p = p->next;}// deleteNode(p);printf("%d,", p->next->x);
p->next = p->next->next;
p = p->next;
nowPeople--;}printf("%d\n", p->x);}return0;}
Who is the last?时间限制1000 ms 内存限制65536 KB题目描述There are N people, numbered from 1 to N, sitting around in a circle. Counted from the NO.1, the M th people should leave the game.loop will go on. After several loops, there will be only on guy left. Writin.