Solution -「MdOI 2020」GCD? GCD!

cirnovsky /

其实有一种很简单的方法。。。

我们可以直接枚举答案。。。

主要是判断,具体看代码注释

因为做法是在是过于简单,故代码中的注释可能不会很多。

但是因为做法简单,所以大家应该都能看懂(不要说我说明过少。。。

时间复杂度:Θ(Tn)\Theta(T\sqrt n)

using namespace std;

int ans;
int T, n;

signed main() {
	for (read(T); T; --T) {
	    read(n);
		if (n <= 5) { // 特判-1
		    write(io_l, -1);
		    continue;
		}
		int res = 0;
		for (int i = 2; i * i <= n; ++i) { // 枚举每一个约数
			if (n % i == 0) {
				if (n / i >= 6) res = max(res, i); // 因为我们需要将n分为3份,所以n/i应该>=6
				if (n / (n / i) >= 6) res = max(res, n / i); 
			}
		}
		write(io_l, res ? res : 1);
	}
	return 0;
}