#include <bits/stdc++.h>
using namespace std;
struct node {
int data;
struct node *next;
};
node *f(node *a, int n) {
a->next = NULL;
a->data = 1;
node *p = a;
if (n == 1) {
a->next = a;
return a;
}
int i = 2;
node *s;
while (i <= n) {
s = (node *)malloc(sizeof(node));
s->data = i;
s->next = NULL;
p->next = s;
p = p->next;
i++;
}
s->next = a;
return a;
}
int main() {
int n, m;
cin >> n >> m;
node *l = (node *)malloc(sizeof(node));
l = f(l, n);
node *p = l;
p = l;
int k = 0;
while (p->next != p) {
k++;
if (k == m - 1) {
node *temp;
temp = p->next;
p->next = p->next->next;
free(temp);
k = 0;
}
p = p->next;
}
cout << p->data;
return 0;
}
因为你的k初值是0,+1之后是1,m如果是1,m-1=0,k永远也不可能得0