怎么一秒内过5000
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/7/10 11:09
  • 上次更新2023/11/3 10:48:11
查看原帖
怎么一秒内过5000
1011137
封禁用户楼主2023/7/10 11:09
#include <bits/stdc++.h>
using namespace std;

int n;

struct Node{
	int v;
	Node *next;
	Node *prev;
}a[50001];

int main(){
	scanf ("%d", &n);
	for (int i = 1; i <= n; i++) {
		a[i].v = i;
		if (i == n)
			a[i].next = &a[1];
		else
			a[i].next = &a[i + 1];
		if (i == 1)
			a[i].prev = &a[n];
		else
			a[i].prev = &a[i - 1];
	}
	Node *p = &a[n];
	int x = 0, t = 1;
	while (x * x <= t) {
		p = p->next;
		++x;
		if (x == t * t) {
			printf("%d ", p->v);
			if (p->next == p)
				break;
			else {
				Node *l = p->prev, *r = p->next;
				l->next = r; r->prev = l;
				p->next = p->prev = NULL;
				x = 0;
				p = l;
			}
			t++;
		}
	}
	return 0;
}
2023/7/10 11:09
加载中...