也是完全不会做,靠百度搜索出来的鬼东西。太数学了以至于自己需要想的地方不多。
- 既然要求圆上的整点,我们联想一下直线上的整点,是跟起点终点的gcd有关的?(事后诸葛亮)
- 已知圆中心对称,不妨设x>0,y>0求出第一象限点,最后加上坐标轴上的就好。
问题变成求x^2+y^2=r^2的整数解。接下来又到了抄抄抄的时间。
- 改写为y^2=r^2-x^2=(r+x)(r-x)
- 令d=gcd(r+x,r-x)
- 则(r+x)/d与(r-x)/d一定互质,互质的两数相乘为完全平方数,则两数都是完全平方数(为了使不计算重复要求互质)
- 令r+x=d*u^2,r-x=d*v^2,显然u>v且u与v互质,接下来用u与v表示别的变量
- 得
- x=d*(u^2-v^2)/2
- y=d*u*v
- r=d*(u^2+v^2)/2
- 接下来我们枚举2r的因子d,对于每个d,枚举u(由于两个u^2和v^2非负数相加为2r/d,枚举次数为sqrt(2r/d)),用上式③计算出v,判断v是否满足
- v是整数
- u>v且u与v互质
复杂度为sqrt(2r)*sqrt(2r/d),应该会T才对?据说有https://blog.csdn.net/MegaOwIer/article/details/73312937这种数论定理的解法?丢番图方程?费马平方和定理?https://blog.csdn.net/bigbigship/article/details/27234325想骗我买数论的书?