-J T1
  • 板块学术版
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/21 16:23
  • 上次更新2023/11/2 12:14:11
查看原帖
-J T1
1011137
封禁用户楼主2023/10/21 16:23
#include <bits/stdc++.h>
using namespace std;

int n;
int ans1, ans2;

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

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, m = n, i = 1, t = 0;
	while (1) {
		p = p->next;
		++x;
		if (i == m)
			m -= t,
			i = 1,
			t = 0;
		if (i == 1)
			ans1++;	
		if (x == 3) {
			if (p->v == n)
				ans2 = ans1;
			if (p->next == p)
				break;
			else {
				Node *l = p->prev, *r = p->next;
				l->next = r;
				r->prev = l;
				p->next = p->prev = NULL;
				p = l;
				x = 0;
				t++;
			}
		}
		i++;
	}
	printf("%d %d\n", ans1, ans2);
	return 0;
}

为啥不对

2023/10/21 16:23
加载中...