【BZOJ1041】圆上的整点 数论

也是完全不会做,靠百度搜索出来的鬼东西。太数学了以至于自己需要想的地方不多。

  • 既然要求圆上的整点,我们联想一下直线上的整点,是跟起点终点的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想骗我买数论的书?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值