1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct Node 4 { 5 int data; 6 struct Node *next; 7 }CLNode; 8 void DeleCL(CLNode *lhead, int m) 9 { 10 int i = 1; 11 CLNode *p = lhead; 12 CLNode *q = lhead; 13 while (p != NULL) 14 { 15 if (i == m) 16 { 17 q->next = p->next; 18 free(p); 19 p = q->next; 20 i = 1; 21 } 22 q = p; 23 p = p->next; 24 if (q == p) 25 { 26 printf("%d\n", p->data); 27 break; 28 } 29 i++; 30 } 31 } 32 int main(void) 33 { 34 int n, m; 35 while (scanf("%d%d", &n, &m) != EOF) 36 { 37 CLNode *head = NULL; 38 CLNode *r; 39 CLNode *p; 40 r = (CLNode *)malloc(sizeof(CLNode)); 41 r->data = 1; 42 head = r; 43 for (int i=2; i<=n; i++) 44 { 45 p = (CLNode *)malloc(sizeof(CLNode)); 46 p->data = i; 47 r->next = p; 48 r = p; 49 } 50 r->next = head; 51 DeleCL(head, m); 52 } 53 return 0; 54 }
Description |
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。 |
Input |
输入n和m值。m>1。 |
Output |
输出胜利者的编号。 |
Sample Input |
5 3 |
Sample Output |
4 |