刘嘉乐 • 1个月前
#include<iostream>
#include<string>
using namespace std;
struct Node{
int pre;
int next;
};
Node node[1000005];
void insertNode(int p, int x) {
int p2 = node[p].next;
node[p].next = x;
node[x].pre = p;
node[x].next = p2;
node[p2].pre = x;
}
void deleteNode(int x) {
if (node[x].pre == -1) {
return ;
}
int p1 = node[x].pre;
int p2 = node[x].next;
node[p1].next = p2;
node[p2].pre = p1;
node[x].pre = -1;
node[x].next = -1;
}
void traverse(){
int cur = node[0].next;
while(cur != 0) {
cout << cur <<" ";
cur = node[cur].next;
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
node[i].pre = i-1;
node[i].next = i+1;
}
node[1].pre = n;
node[n].next = 1;
int id = 1,res;
for(int i=1;i<=n*m;i++){
int tmp = node[id].next;
if(i%m==0){
res = id;
deleteNode(id);
}
id = tmp;
}
cout<<res<<'\n';
return 0;
}
评论: