思路:

$x^2+y^2=r^2$
$y=\sqrt{(r+x)(r-x)}$
令$ d=gcd(r+x,r-x)$
设A=$(r-x)/d$   $B=(r+x)/d$
则$gcd(A,B)=1$
$y^2=d^2*A*B$
∵$d、y$为完全平方数、$gcd(A,B)=1$、且$A!=B$(在坐标轴上的最后算)
∴$A、B$为完全平方数
设$a^2=(r+x)/d  b^2=(r-x)/d$
则$a^2+b^2=2r/d$
即d是2r的约数
那我们就$1到\sqrt{2r}$枚举约数
再枚举a (从$\sqrt{r/d}$枚举到$\sqrt{2r/d}$) $a^2=(r+x)/d$
$b^2=(r-x)/d=2r/d-a^2$
判断一下$gcd(a^2,b^2)$是不是等于1且$a!=b!=0$且$\sqrt{b}^2==b$
最后答案就是ans*4(四个象限)+4(坐标轴上的)

//By SiriusRen
#include <cmath>
#include <cstdio>
using namespace std;
#define int long long
int r,ans;
int gcd(int x,int y){return y?gcd(y,x%y):x;}
void solve(int d){int lst=sqrt(2*r/d),fst=sqrt(r/d);if(fst*fst<r/d)fst++;for(int a=fst;a<=lst;a++){int sqrb=2*r/d-a*a,b=sqrt(sqrb); if(a&&b&&b*b==sqrb&&a!=b&&gcd(a*a,sqrb)==1)ans++;}
}
signed main(){scanf("%lld",&r);int sqr=sqrt(2*r);for(int d=1;d<=sqr;d++)if((2*r)%d==0)solve(d),solve(2*r/d);printf("%lld\n",ans*4+4);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6535061.html

BZOJ 1041 数学相关推荐

  1. BZOJ 1041 圆上的整点 数学

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

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

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

  3. [BZOJ 1041] 圆上的整点

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

  4. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  5. 【BZOJ 1041】圆上整点

    1.题目链接.给定半径,找一下这个圆上有多少个整点.其实也就是格点. 2.这个题目其实是比较有意思的,做法也有很多种.比较常规的解法是: 到这里其实就好办了,因为x是一个平方数,A,B互质,所以A,B ...

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

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

  7. 【BZOJ】【1041】【HAOI2008】圆周上的点

    数学 orz hzwer 完全不会做-- 很纠结啊,如果将来再遇到这种题,还是很难下手啊-- 引用题解: [分析]: 样例图示: 首先,最暴力的算法显而易见:枚举x轴上的每个点,带入圆的方程,检查是否 ...

  8. BZOJ 3119 Book (贪心+数学推导)

    BZOJ 3119 Book (贪心+数学推导) 手动博客搬家: 本文发表于20191029 22:49:41, 原地址https://blog.csdn.net/suncongbo/article/ ...

  9. BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )

    BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...

最新文章

  1. mysql排序分页乱的_Mysql 排序分页混乱
  2. python简说(二十二)写日志
  3. 质数和分解(动态规划)
  4. 高德地图调用和添加标注
  5. 从setTimeout,onclick传参看js函数作为参数
  6. ssm架构 开源项目_如何为您的开源项目选择正确的品牌架构
  7. 2017年网易游戏数据挖掘/机器学习实习生笔试
  8. 需求处理的三个步骤:需求梳理、需求分析、需求放大
  9. 如何在计算机中找到桌面这个项,怎样找到“计算机管理”这项菜单?
  10. RTP、RTCP及媒体流同步
  11. ZZULIOJ1071-1075Python解法
  12. 【区块链开发入门】(四) Truffle详解篇1
  13. 计算机怎么写入院记录,住院病历书写范文
  14. 自举电容充电回路分析
  15. vue-pdf的使用
  16. FFMPEG学习【ffmpeg工具】
  17. Windows系统服务器如何架设网站
  18. 计算机两个硬盘的作用,固态硬盘时代谈谈双硬盘(固态+机械硬盘)的好处
  19. 找最大数及下标 指针 c语言,c语言求数组中最大值和最小值及其下标
  20. pymongo 基本操作

热门文章

  1. Android View 自定义RangeSeekBar范围选择器
  2. 时隔2月,我的第二篇
  3. 根据指定的commit查找对应的log
  4. RT-thread内核之对象管理系统
  5. LeetCode(589)——N叉树的前序遍历(JavaScript)
  6. C++---基于ffmpeg实现视频播放器(一)
  7. Error:Expected linebreaks to be ‘LF‘ but found ‘CRLF‘ linebreak-style
  8. 移动开发—Less基础与安装
  9. ES6学习(十)—async 函数
  10. a73*2+a53*2指的是什么_篮球内外线是什么意思?篮球外线是什么位置-百科-