제출 #1220713

#제출 시각아이디문제언어결과실행 시간메모리
1220713rainboyHack (APIO25_hack)C++20
100 / 100
79 ms916 KiB
#include "hack.h"
#include <vector>

using namespace std;

const int N = 1000000000;

typedef vector<long long> vl;

int hack() {
	int lower = N / 2 + 1, upper = N + 1;
	while (upper - lower > 1) {
		int n = (lower + upper) / 2;
		int m = 1;
		while (m * m < n - lower)
			m++;
		int q = (n - lower + m - 1) / m;
		vl aa(m + q);
		for (int i = 0; i < m; i++)
			aa[i] = i + 1;
		for (int i = 0; i < q; i++)
			aa[m + i] = min(m * (i + 1) + lower, n);
		if (collisions(aa) == 0)
			lower = n;
		else
			upper = n;
	}
	int n = lower, n_ = n;
	for (int p = 2; p <= n_ / p; p++)
		if (n_ % p == 0) {
			while (n_ % p == 0)
				n_ /= p;
			while (n % p == 0 && collisions({ 1, n / p + 1 }) != 0)
				n /= p;
		}
	if (n_ > 1)
		if (n % n_ == 0 && collisions({ 1, n / n_ + 1 }) != 0)
			n /= n_;
	return n;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...