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)\) 虽然这看上去是会超时的,但是显然我们可以剪枝,而且这个做法的缓存连续性好,所以实际跑起来非常快.

posted @ 2026-10-22 12:46  txp2025  阅读(9)  评论(0)    收藏  举报