BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 3621 Solved: 1605
[Submit][Status][Discuss]
Description
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
Input
只有一个正整数n,n<=2000 000 000
Output
整点个数
Sample Input
Sample Output
HINT
Source
一道几何数学好题。
根据圆的方程,$X^{2}+Y^{2}=R^{2}$
可以变形得到,$Y^{2}=R^{2}-X^{2}$
根据平方差公式,$Y^{2}=(R+X)*(R-X)$
左右取算数平方根,$Y= \sqrt{(R+X)*(R-X)}$
设$d=gcd(R+X,R-X)$,即$d$为$R+X$和$R-X$的最大公约数
设$A=\frac{R-X}{d}$,$B=\frac{R+X}{d}$,那么显然有$A$和$B$互质
那么$Y=d*\sqrt{A}*\sqrt{B}$,为了让$Y$为整数,显然需要$\sqrt{A}$和$\sqrt{B}$为整数
设$a=\sqrt{A}$,$b=\sqrt{B}$,有$a$和$b$不等且互质,$a \lt b$
$A+B=a^{2}+b^{2}=\frac{R+X}{d}+\frac{R-X}{d}=\frac{2R}{d}$
那么$d$需要是$2R$的约数,这个可以$\sqrt{2R}$的枚举
对于一个$d$,再枚举$a$,注意$2a^{2} \lt a^{2}+b^{2}=\frac{2R}{d}$
所以$a$只需要在$\sqrt{\frac{R}{d}}$的范围内枚举
注意最后加上坐标轴上的4个整点
#include <bits/stdc++.h> typedef long long lnt; using namespace std; lnt gcd(lnt a, lnt b)
{
return b ? gcd(b, a % b) : a;
} signed main(void)
{
lnt R, ans = ; scanf("%lld", &R); for (lnt d = ; d*d <= (R << ); ++d)
if ((R << ) % d == )
{
for (lnt a = ; a*a <= R/d; ++a)
{
double b = sqrt((*R) / d - a*a);
lnt bb = floor(b);
if (b != bb)
continue;
if (gcd(a, bb) != )
continue;
if (a != b)
++ans;
} if (d*d != *R)
for (lnt a = ; a*a <= d/; ++a)
{
double b = sqrt(d - a*a);
lnt bb = floor(b);
if (b != bb)
continue;
if (gcd(a, bb) != )
continue;
if (a != b)
++ans;
}
} printf("%lld\n", ans* + );
}
@Author: YouSiki
BZOJ 1041: [HAOI2008]圆上的整点的更多相关文章
- bzoj 1041: [HAOI2008]圆上的整点 数学
1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 853[Submit][Stat ...
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4210 Solved: 1908[Submit][Sta ...
- BZOJ 1041 [HAOI2008]圆上的整点:数学
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...
- BZOJ 1041 [HAOI2008]圆上的整点:数学【费马平方和定理】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...
- BZOJ(2) 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4966 Solved: 2258[Submit][Sta ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...
- 【BZOJ】1041: [HAOI2008]圆上的整点(几何)
http://www.lydsy.com:808/JudgeOnline/problem.php?id=1041 所谓的神题,我不会,直接题解..看了半天看懂题解了.详见hzwer博客 这题呢,我只能 ...
- 1041: [HAOI2008]圆上的整点 - BZOJ
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数.Input rOutput 整点个数Sample Input4Sample Output4HINT n ...
随机推荐
- Android 手机卫士10--应用管理器
1.添加不同类型条目 class MyAdapter extends BaseAdapter{ //获取数据适配器中条目类型的总数,修改成两种(纯文本,图片+文字) @Override public ...
- LaunchScreen.storyboard启动图遇到的坑
Xcode有时候在LaunchScreen.storyBoard中修改了启动图片之后,运行却没有效果,直接白屏,而往storyboard中拖插件是可以显示的,设置成Assets.xcassets中的其 ...
- Android窗口机制分析与UI管理系统
类图关系 在看Android的窗口机制之前,先看看其主要的类图关系以及层级之间的依赖与调用关系 1.window在当前的android系统的中的呈现形式是PhoneWindow (frameworks ...
- LinuxMint装JDK和Eclipse
Linux Mint 装JDK和Eclipse 前言 在尝试了好几个发行版后终于锁定了Linux Mint Cinnamon .那么就得配置好环境了. 这里讲一下JAVA环境,配置JDK和Eclips ...
- Android MVP 设计模式
1.基本概念 Model : 模型 负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等: View : 视图 负责界面数据的展示,与用户进行交互: Presenter ...
- 记录一次Quartz2D学习(七)
(六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1 通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...
- 11g新特性:Health Monitor Checks
一.什么是Health Monitor ChecksHealth Monitor Checks能够发现文件损坏,物理.逻辑块损坏,undo.redo损坏,数据字典损坏等等.Health Monitor ...
- MySQL 临时表
MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. 临时表在MySQL 3.23版本中添加,如果你的MySQL版本 ...
- php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
$now=time(); $secondtime=$end_time-$now;//期限时间减去现在时间 剩余时间 $second=$secondtime % 60;//取余得到秒数 $nowtime ...
- .NET判断是否为AJAX提交
AJAX异步方式请求比同步方式请求HTTP头部多一个 X-Requested-With 直接影响 C#中 Request.IsAjaxRequest() 的判断,同步方式判断为false 当然也可以自 ...