AT_abc480_e 题解
考场上没切出来,后来想了想觉的其实不难
思考.
由于是等差数列求积,所以积的增长是很快的.
因此,数列最多有\(m=20\)项,毕竟\(20\)的阶乘就超过\(10^{18}\)了.
然后我们考虑怎么确定首项和公差.
我们考虑长度最小的情况,设首项为\(a\),公差为\(k\)
\(a(a+k)(a+2k)\)
显然,这个式子中\(a\)的最大次为\(3\).\(k\)的最大次为\(2\)
因此合法的\(a,k\)必须满足\(a^3\leq10^{18},k^2\leq10^{18}\),翻译以下就是\(a\leq10^{6},k\leq10^{9}\)
那么我们可以枚举首项,然后枚举长度,对于每个长度二分最大的公差.
复杂度就是\(O(malog_2k)\) 虽然这看上去是会超时的,但是显然我们可以剪枝,而且这个做法的缓存连续性好,所以实际跑起来非常快.

浙公网安备 33010602011771号