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 ...
随机推荐
- Effective java笔记(一),创建与销毁对象
1.考虑用静态工厂方法代替构造器 类的一个实例,通常使用类的公有的构造方法获取.也可以为类提供一个公有的静态工厂方法(不是设计模式中的工厂模式)来返回类的一个实例.例如: //将boolean类型转换 ...
- PDO运用
- AngularJs最简单解决跨域问题案例
AngularJs最简单解决跨域问题案例 2016-05-20 09:18 82人阅读 评论(0) 收藏 举报 分类: javascript(1) 作者:白狼 出处:http://www.mank ...
- 前端导出Excel兼容写法
今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- [转]HttpModule的认识
HttpModule是向实现类提供模块初始化和处置事件.当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于H ...
- 嵌入式:J-link刷固件(坑)
1.上电,短接ERASE,>10秒后,拔USB. 2.短接TST,上电,>10秒后,拔USB. 3.安装驱动.(看别人教程,下载到INF文件,WIN7不能右击安装,好,换虚拟机XP) 4. ...
- jsp中的@include与jsp:include区别详解
1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...
- Ubuntu管理开机启动服务项 -- 图形界面的Boot-up Manager
有时学习时安装的服务太多,比如mysql.mongodb.redis.apache.nginx等等,它们都是默认开机启动的,如果不想让它们开机启动,用到时再自己手工启动怎么办呢? 使用sysv-rc- ...
- linux系统如何管理文件
硬盘中的静态文件和inode(i节点) (1)文件平时都在存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫静态文件. (2)一块硬盘中可以分为两大区域:一个是硬盘内容管理表项,另一个是真 ...