专注数论分析三十年。
暴力跑了 2min ……
如果你想享受做题的乐趣就不要看啦。。
好了如果你还在看的话那就不能享受做题的乐趣了。。
事实上就是要快速枚举 a2+4b2=p2 ( a,b,c 均为奇数,且 gcd(a,b,c)=1 )。
换元令 a=c+2i,b=c−j ,代入后整理得 p=2j−ii2+j2 。
再次换元令 t=2j−i ,代入后整理得 p=t5j2+t−4j 。
枚举 j 即可。
相关点:如果 a2+b2=c2 ,则将 a+bi 分别乘上 1+2i 和 1−2i 就可以得到 a2+b2=5c2 的解。
而且这是个丢番图方程,用一个奇怪的方法叫做割线法可以求?
关于 ax2+by2=cz2 有一种方法可以快速枚举出来……名字叫做 Lagrange’s trick ?
首先两边都乘以 a ,把原方程化为 x2+by2=cz2 这种样子。
首先我们需要找到任意一组解 (x0,y0,z0) 。考虑
(cz0z)2=c2z02z2=(x02+by02)(x2+by2)=(x0x+by0y)2+b(x0y−y0x)2
然后再考虑 x2+by2=z2 该怎么解。显然 by2=(z−x)(z+x) 。分解质因数 b=b1b2 ,令 y2=b1z−xb2z+x ,然后就可以令 y=tpq,b1z−x=tp2,b2z+x=tq2 ,其中 p,q 互质。枚举 p,q 保证得到的数是整数即可。