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 = (R+Y)(R-Y)
令 d=gcd(R+Y,R-Y),A=(R+Y)/d,B=(R-Y)/d
则 gcd(A,B)=1,且A != B
X^2= d^2 *A * B
所以 A * B 为 完全平方数
又因为 gcd(A,B)=1 ,A!=B,所以 A,B 都是 完全平方数
令 a= 根号A,b=根号B
a^2 + b ^2 = 2*R / d
所以 d 必须是 2*R 的 约数
根号(2*R) 枚举 约数 d
1、a^2 + b^2 = 2*R / d
2、a^2 + b^2 = d
对于 每一种 情况 分别 根号复杂度 枚举 a,计算b
判断相应的 A ,B 是否满足 gcd=1 且 A!=B
满足则 ans+1
这只算出了第一象限的情况
根据园的对称性,ans*4 可得 所有 象限内的点
最后在加上4个在 坐标轴上的点即可
#include<cmath>
#include<cstdio> using namespace std; typedef long long LL; LL R; int ans=; int gcd(int A,int B) { return !B ? A : gcd(B,A%B); } void solve(int t,int d)
{
int n=sqrt(t*1.0);
int A,B,b;
for(LL a=;a<=n;++a)
{
B=t-a*a; b=sqrt(B);
if(b*b!=B || !B) continue;
A=a*a;
if(gcd(A,B)== && A!=B) ans++;
}
} int main()
{
scanf("%lld",&R);
int n=sqrt(R*2.0);
for(int d=;d<=n;++d)
{
if(R*%d==)
{
solve(*R/d,d);
if(d*d!=n) solve(d,*R/d);
}
}
ans/=;
ans=ans*+;
printf("%d",ans);
}
1041: [HAOI2008]圆上的整点
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 4640 Solved: 2092
[Submit][Status][Discuss]
Description
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
Input
只有一个正整数n,n<=2000 000 000
Output
整点个数
Sample Input
Sample Output
bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点的更多相关文章
- BZOJ1041 [HAOI2008]圆上的整点 【数学】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4631 Solved: 2087 [Submit][S ...
- [BZOJ1041] [HAOI2008] 圆上的整点 (数学)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- BZOJ1041:[HAOI2008]圆上的整点(数论)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- BZOJ1041 HAOI2008圆上的整点(数论)
求x2+y2=r2的整数解个数,显然要化化式子.考虑求正整数解. y2=r2-x2→y2=(r-x)(r+x)→(r-x)(r+x)为完全平方数→(r-x)(r+x)/d2为完全平方数,d=gcd(r ...
- [bzoj1041][HAOI2008]圆上的整点
我能想得出怎么做才奇怪好吗 题解:http://blog.csdn.net/csyzcyj/article/details/10044629 #include<iostream> #inc ...
- 【BZOJ1041】[HAOI2008]圆上的整点
[BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...
- BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3621 Solved: 1605[Submit][Sta ...
- 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 ...
随机推荐
- c++第七次作业____最后的总结
先言: 在这过程中学到: 第二次作业Github的使用 第四次作业计算器的计算 ps:表达式处理以及计算 第五次作业文件的处理问题 第六次作业界面的设计 总结: 1.这学期的计算器,做的有点匆忙,偶尔 ...
- linux上传的命令
pscp D:\apache-tomcat-8.0.38\webapps\GameDataServer.zip root@112.74.32.215:/usr/local/tools/tomcat/a ...
- js获取浏览器窗口属性
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- rua出300道四则运算题
- react +MUI checkbox使用
PS:因项目采用MUI,故,在此所讲的checkbox组件为MUI里的checkbox 因checkbox组件里 oncheck函数没法判断复选框是否选中,故,若直接复用且通过state改变check ...
- 订制EditText光标
订制EditText光标 设置背景android:background="@null" 设置光标样式:android:textCursorDrawable="@drawa ...
- CentOS下Neo4j安装教程
本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz. 下载Neo4j安装包 使用wget命令获取Neo4j ...
- BAT等公司必问的8道Java经典面试题,你都会了吗?
工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1.“知其然不知其所以然”.做了多年技术,开发了很多业务应用,但似乎并 ...
- codeforces 1041 E.Vasya and Good Sequences(暴力?)
E. Vasya and Good Sequences time limit per test 2 seconds memory limit per test 256 megabytes input ...
- nginx实现ldap认证
1.安装依赖. yum -y install openldap-devel yum install pcre pcre-devel -y yum -y install openssl openssl- ...