題目:
https://www.luogu.com.cn/problem/P1996
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <bits/stdc++.h> using namespace std;
struct ListNode{ int val; ListNode* next = nullptr; ListNode(int i): val{i}{} };
int main(){ ios::sync_with_stdio(0); cin.tie(0);
int n, m; while(cin >> n >> m){ ListNode* head = nullptr, *last = nullptr;
for(int i=1; i<=n; ++i){ ListNode* newNode = new ListNode(i);
if(head == nullptr){ head = newNode; } else{ last->next = newNode; } last = newNode; } if(last != nullptr) last->next = head;
bool first = true; ListNode* current = head; ListNode* pre = last; for(int count = 1; count <= n; ++count){ if(first) first = false; else cout << ' ';
for(int i=1; i<m; ++i){ pre = current; current = current->next; } cout << current->val;
pre->next = current->next; ListNode* tmp = current; current = current->next;
if(tmp == head) head = current;
delete tmp; } cout << '\n'; } return 0; }
|