把 N,MN,MN,M 看成一元二次方程 x2−Sx+P=0x^2-Sx+P=0x2−Sx+P=0 的两个根。
存在所求正整数对,当且仅当判别式 D=S2−4PD=S^2-4PD=S2−4P 非负且为完全平方数,设 D=r2D=r^2D=r2 后,S−rS-rS−r 还是正偶数;此时 N=(S−r)/2N=(S-r)/2N=(S−r)/2、M=(S+r)/2M=(S+r)/2M=(S+r)/2 就是满足条件的正整数。由于 S2S^2S2 可达到 102410^{24}1024,计算判别式及平方比较时必须使用 128 位整数。
在 [0,S][0,S][0,S] 上二分求 ⌊D⌋\lfloor\sqrt D\rfloor⌊D⌋,再精确检查平方、奇偶性和正数条件即可。
时间复杂度为 O(logS)O(\log S)O(logS),空间复杂度为 O(1)O(1)O(1)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户