题目大意

给出\(r\),求圆\(x^2+y^2=r^2\)上坐标均为整数的点数。\(n<=2,000,000,000\)

总体思路

我们看到这个数据大小,还是个数学题,想到这个的时间复杂度应当为\(O(\sqrt{r})\)。要达到这个效果,我们先要把\(r^2\)转化成\(r\),然后在\(\sqrt{r}\)的范围内枚举某个数。对于我们以前的经验,这枚举的“某个数”有:质因数分解、求因数等。这个题目好像跟质数的关系不大!那就是枚举因数喽!
以上的叙述就为我们以后的数学推导提供了目标。推导时,应当思维发散,大胆尝试,多尝试几种方法,最终筛选出以下数学推导得出解决办法的过程。

数学推导

经过移项等操作我们得到:
\[y^2=(r-x)(r+x)\]
我们令\(d=\gcd(r+x,r-x)\),\(A=\frac{r-x}{d},B=\frac{r+x}{d}\)。这时我们发现:
\[A+B=\frac{2r}{d}\]
这样,我们在\(\sqrt{2r}\)内枚举\(d\)(同时得到了\(d\)一个因数和\(\frac{2r}{d}\)一个因数),再在\(2r/d/2=\frac{r}{d}\)内枚举\(A\)和\(B\),看看有多少对\(A,B\)符合要求。这样我们已经把\(r\)降次了。
但是每枚举一个\(d\),都需要在\(\frac{r}{d}\)内枚举一遍\(A\),这使时间复杂度近似地变为线性,于我们要求的根号的复杂度仍然有距离。所以我们仍然要进一步优化。

推论1

对\(a,b,c\in Z\),若\(a^2=b^{2}c\),则\(\sqrt{c}\in Z\).
证明:\(c=(\frac{a}{b})^2, b^2|a^2\)

推论2

对\(a,b,c\in Z\),若\(a^2=bc\),且\(\gcd(b,c)=1\),则\(\sqrt{b}\in Z, \sqrt{c}\in Z\)
证明:因为\(b,c\)互质,故根据唯一分解定理,\(b,c\)的质因数中不存在交集。因为\(a\)是个完全平方数,组成它的所有质因数的次数都是偶数,而这些质因数都必须存在于\(b,c\)中,因此原命题成立。

这样,因为\(y^2=d^2AB\),故根据推论1,\(AB\)为完全平方数。因为\(\gcd(A,B)=1\),所以根据结论2,\(A,B\)为完全平方数。所以,为了保证枚举到的\(A\)都是完全平方数,令\(a=\sqrt{A},b=\sqrt{B}\),看看是否能同时满足存在整数\(b\)使得\(a^2+b^2=\frac{2r}{d}\)且\(\gcd(A=a^2,B=b^2)=1\)。这样\(a\)枚举的范围便是\(\sqrt\frac{r}{d}\),进一步加快了速度。

#include <cstdio>
#include <cmath>
using namespace std;#define ll long longll Gcd(ll a, ll b)
{return b ? Gcd(b, a%b) : a;
}void Find(ll r, ll d, ll &ans)
{for (ll a = 1; a <= sqrt(r / d); a++){ll b = sqrt(r * 2 / d - a * a);if (a * a + b * b == r * 2 / d && a != b && Gcd(a * a, b * b) == 1)         ans++;}
}int main()
{ll r, ans = 0;scanf("%lld", &r);for (ll d = 1; d * d <= r * 2; d++){if (r * 2 % d == 0){Find(r, d, ans);if (d*d != r * 2)Find(r, r * 2 / d, ans);}}printf("%lld\n", ans * 4 + 4);return 0;
}

转载于:https://www.cnblogs.com/headboy2002/p/8955118.html

luogu2508 [HAOI2008]圆上的整点相关推荐

  1. bzoj 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2838  Solved: 1238 [Submit][S ...

  2. bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点

    http://www.lydsy.com/JudgeOnline/problem.php?id=1041 设 X>0 ,Y>0 X^2 + Y^2 = R^2 X^2 = R^2-Y^2 ...

  3. BZOJ1041:[HAOI2008]圆上的整点(数论)

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  4. bzoj1041 [HAOI2008]圆上的整点 gcd

    这个题非常恶心,因为条件很少,要求也很少,看起来没有任何特殊的性质 所以只能往约数.gcd上靠 然后就是 x^2=r^2-y^2=(r-y)(r+y) 设A=r-y, B=r+y 由于A*B是完全平方 ...

  5. 【HAOI2008】【BZOJ1041】圆上的整点

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input r Output 整点个数 Sample Input 4 Sample Output 4 ...

  6. 【codevs1867】【Tyvj3508】【BZOJ1041】圆上的整点,数学乱搞

    传送门1 传送门2 传送门3 写在前面:乱搞数学-- 思路: 原博文 有了上面的推理,那么实现的方法为: 枚举d∈[1,sqrt(2R)],然后根据上述推理可知:必先判d是否为2R的一约数. 此时d为 ...

  7. [BZOJ 1041] 圆上的整点

    Description 求一个给定的圆( x2+y2=r2 x 2 + y 2 = r 2 x^2+y^2=r^2),在圆周上有多少个点的坐标是整数 Input 只有一个正整数 n n n,n≤200 ...

  8. BZOJ 1041 圆上的整点 数学

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1041 题目大意: 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是 ...

  9. 2019 ICPC 上海站网络赛 K.Peekaboo (圆上整点)

    https://nanti.jisuanke.com/t/41421 题意:给定平面上两个点到原点之间的距离aaa和bbb以及这两点之间的距离ccc,且这两点的坐标均是整数,求该两点可能的坐标,按字典 ...

  10. BZOJ 4544: 椭圆上的整点

    Sol 数学. 跟圆上的整点一样...TA写了个积性函数的算法...以后再说吧... \(x^2+3y^2=r^2\) \(3y^2=r^2-x^2\) \(3y^2=(r-x)(r+x)\) \(y ...

最新文章

  1. 轻断食是一种科学的减肥方法吗?
  2. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
  3. gazebo卡了_ardupilot gazebo打开卡死解决办法
  4. feign 能干什么:
  5. Nginx 中 nginx.conf 详解
  6. linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
  7. python 服务端判断客户端异常断开
  8. Java编程:KMP算法
  9. 正则表达式:Javascript
  10. Visual Studio 开源控件扩展 NuGet 常用组件安装命令
  11. 文本分类概述(nlp)
  12. 中继 并发量_潮流UCM6102 IP PBX 支持500门分机 双外线 30个并发数
  13. Excel2JSON Excel转JSON Excel另存为JSON的技巧
  14. 计算机文件右击怎么显示打开方式,修复鼠标右键点击文件打开方式在win10中没有反应...
  15. SAP-MM知识精解-STO公司内的库存转储订单(01)-不带交货单配置及操作
  16. 【转】博弈论中的几个经典问题
  17. 一加5t刷android p,一加5T刷机包
  18. (纯故事)我简单写几篇,就这一次
  19. 天猫实时销量接口用于商品数据分析,超详细的接口介绍
  20. Engineering Dynamics 3 --- 转动惯量

热门文章

  1. linux下的系统服务管理及日志管理
  2. 二叉树进阶之平衡二叉树的判断
  3. Error:Could not launch XXX failed to get the task for process 1105
  4. Delphi2010中向TRxRichEdit控件中插入OLE对象。
  5. 一个系统管理员的自白
  6. nohup与区别于使用
  7. 关于vector的两个问题(reserve方法修整过剩空间)
  8. 决策过程并举例_成本效益分析举例
  9. Unity播放声音的两种方式以及相关遇到的
  10. 利用PlayerPrefs存储数据