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

4

Sample Output

4

bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点的更多相关文章

  1. BZOJ1041 [HAOI2008]圆上的整点 【数学】

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

  2. [BZOJ1041] [HAOI2008] 圆上的整点 (数学)

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

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

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

  4. 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 ...

  5. [bzoj1041][HAOI2008]圆上的整点

    我能想得出怎么做才奇怪好吗 题解:http://blog.csdn.net/csyzcyj/article/details/10044629 #include<iostream> #inc ...

  6. 【BZOJ1041】[HAOI2008]圆上的整点

    [BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...

  7. BZOJ 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3621  Solved: 1605[Submit][Sta ...

  8. bzoj 1041: [HAOI2008]圆上的整点 数学

    1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  9. bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 853[Submit][Stat ...

随机推荐

  1. c++第七次作业____最后的总结

    先言: 在这过程中学到: 第二次作业Github的使用 第四次作业计算器的计算 ps:表达式处理以及计算 第五次作业文件的处理问题 第六次作业界面的设计 总结: 1.这学期的计算器,做的有点匆忙,偶尔 ...

  2. linux上传的命令

    pscp D:\apache-tomcat-8.0.38\webapps\GameDataServer.zip root@112.74.32.215:/usr/local/tools/tomcat/a ...

  3. js获取浏览器窗口属性

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...

  4. rua出300道四则运算题

  5. react +MUI checkbox使用

    PS:因项目采用MUI,故,在此所讲的checkbox组件为MUI里的checkbox 因checkbox组件里 oncheck函数没法判断复选框是否选中,故,若直接复用且通过state改变check ...

  6. 订制EditText光标

    订制EditText光标 设置背景android:background="@null" 设置光标样式:android:textCursorDrawable="@drawa ...

  7. CentOS下Neo4j安装教程

    本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz. 下载Neo4j安装包 使用wget命令获取Neo4j ...

  8. BAT等公司必问的8道Java经典面试题,你都会了吗?

    工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1.“知其然不知其所以然”.做了多年技术,开发了很多业务应用,但似乎并 ...

  9. 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 ...

  10. nginx实现ldap认证

    1.安装依赖. yum -y install openldap-devel yum install pcre pcre-devel -y yum -y install openssl openssl- ...