CF364D Ghd

题目描述

John Doe 提议他的妹妹 Jane Doe 求一组数 $a$ 的最大公约数(gcd)。 最大公约数指的是一个正整数 $g$,使得集合中的所有数都能被 $g$ 整除,并且不存在大于 $g$ 的正整数 $g'$,使得所有数都能被 $g'$ 整除。 不幸的是,Jane 没能完成这个任务,于是 John 又建议她求同一组数的最大半公约数(ghd)。 最大半公约数(ghd)是指一个正整数 $g$,使得集合中至少一半的数都能被 $g$ 整除,并且不存在大于 $g$ 的正整数 $g'$,使得集合中至少一半的数都能被 $g'$ 整除。 Jane 花了两个小时才完成这个任务。请你也尝试一下。

输入格式

第一行包含一个整数 $n$($1 \le n \le 10^{6}$),表示集合 $a$ 中有多少个数。 第二行包含用空格分隔的 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^{12}$)。集合中可能包含相等的数。 请注意,在 C++ 中读写 64 位整数时请不要使用 %lld 格式符,建议使用 %I64d。

输出格式

输出一个正整数 $g$,即集合 $a$ 的最大半公约数(ghd)。

说明/提示

由 ChatGPT 5 翻译