先只统计满足 x≤y≤zx\le y\le zx≤y≤z 的三元组,再按相等关系乘排列数。
由 yz≤Nyz\le Nyz≤N 且 y≤zy\le zy≤z 可知 y≤⌊N⌋y\le\lfloor\sqrt N\rfloory≤⌊N⌋。固定 yyy,令 q=⌊N/y⌋q=\lfloor N/y\rfloorq=⌊N/y⌋,则 1≤x≤y1\le x\le y1≤x≤y 且 y≤z≤qy\le z\le qy≤z≤q,其余两个乘积条件自动成立。
当 x<y<zx<y<zx<y<z 时有 6(y−1)(q−y)6(y-1)(q-y)6(y−1)(q−y) 个排列;当 x=y<zx=y<zx=y<z 时有 3(q−y)3(q-y)3(q−y) 个;当 x<y=zx<y=zx<y=z 时有 3(y−1)3(y-1)3(y−1) 个;当三者相等时有 111 个。对所有 1≤y≤⌊N⌋1\le y\le\lfloor\sqrt N\rfloor1≤y≤⌊N⌋ 求和并取模即可。
每组数据的时间复杂度为 O(N)O(\sqrt N)O(N),额外空间复杂度为 O(1)O(1)O(1)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户