刘嘉乐  •  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;
}

评论: