[ HAOI 2008 ] 圆上的整点
\(\\\)
Description
给出一个整数 \(r\) ,求圆 \(x^2+y^2=r^2\) 上的整点数。
- \(r\le 2\times 10^9\)
\(\\\)
Solution
神题。
可以注意到,坐标轴上共有四个整点,其余位置各个象限里整点数相同,所以我们只需要计算第一象限的答案。
首先有方程
\]
移项,得
\]
设 \(d=gcd(r+y,r-y)\),有
\]
因为 \(x^2,d^2\) 均为完全平方数,所以 \(\frac{r+y}{d}\times \frac{r-y}{d}\) 是完全平方数。
根据 \(d\) 的定义,显然有 \((\frac{r+y}{d},\frac{r-y}{d})=1\)。
然而显然存在的是,两个不同的质数之积,或一个质数的平方和另一个质数的积都不是完全平方数。
所以 \(\frac{r+y}{d}, \frac{r-y}{d}\) 都是完全平方数。
我们设 \(a,b\) 分别满足:
\]
那么有
\]
解法出来了。
首先 \(\sqrt {2r}\) 枚举 \(2r\) 的因数,显然 \(d\) 不同的方案得到的点一定不同。
然后对于枚举的每一个 \(d\) ,枚举每一个可能的 \(a\) ,检验对应的 \(b\) 是否为整数,且满足互质即可。
注意交换 \(a,b\) 是一种情况,所以我们枚举 \(a\) 的范围在 \([1,\sqrt{\frac{2r}{d\times 2}}\ ]\) 里。
复杂度分析:
枚举约数 \(\sqrt{2r}\) ,对于每一个 \(d\) 再 \(\sqrt d\) 的枚举约数,验证用到 \(gcd\) 复杂度 \(log\) 。
总复杂度大概是 \((2r)^{\frac 34}log(2r)\) 级别的。
\(\\\)
Code
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define R register
using namespace std;
typedef long long ll;
ll n,ans;
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
int main(){
scanf("%lld",&n);
n<<=1;
ll lim=sqrt(n);
for(R ll d=1,lim1;d<=lim;++d)
if(n%d==0){
lim1=sqrt((n/d)/2);
for(R ll a=1,b;a<=lim1;++a){
b=sqrt((n/d)-a*a);
if(a==b) continue;
if(b*b!=(n/d)-a*a) continue;
if(gcd(a*a,b*b)!=1) continue;
++ans;
}
if(n/d!=d){
ll d1=n/d;
lim1=sqrt(d/2);
for(R ll a=1,b;a<=lim1;++a){
b=sqrt((n/d1)-a*a);
if(a==b) continue;
if(b*b!=(n/d1)-a*a) continue;
if(gcd(a*a,b*b)!=1) continue;
++ans;
}
}
}
printf("%lld\n",ans*4+4);
return 0;
}
[ HAOI 2008 ] 圆上的整点的更多相关文章
- 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 ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4210 Solved: 1908[Submit][Sta ...
- 【BZOJ1041】[HAOI2008]圆上的整点
[BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...
- 【BZOJ1041】圆上的整点(数论)
[BZOJ1041]圆上的整点(数论) 题面 BZOJ 洛谷 题解 好神仙的题目啊. 安利一个视频,大概是第\(7\)到\(19\)分钟的样子 因为要质因数分解,所以复习了一下\(Pollard\_r ...
- 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 ...
- BZOJ1041 [HAOI2008]圆上的整点 【数学】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4631 Solved: 2087 [Submit][S ...
随机推荐
- 洛谷 P1457 城堡 The Castle
P1457 城堡 The Castle 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张“幸运爱尔兰”(一种彩票).结果这 ...
- Ubuntu 16.04中iptables的工具简介(iptables/iptables-restore/iptables-xml/iptables-apply/iptables-save)
Ubuntu 16.04中安装的iptables版本为1.6.0,官方参考:http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/iptables ...
- DTRACE简介之完结篇3
https://blogs.oracle.com/swan/entry/dtrace%E7%AE%80%E4%BB%8B_3 DTRACE简介之完结篇 By samwan on 四月 13, 2007 ...
- 程序猿Web面试之JSON
JSON是什么? JSON(JavaScript对象表示法), 是在网络通信下.经常使用的一种数据表达格式,它有助于我们于一个自描写叙述的,独立的和轻的方式呈现并交换数据. 这些数据能够易于和转 ...
- Python学习系列之文件操作
Pyhton文件打开方式 with= open('文件路径','打开模式') as f:#PS:python3提供了with语句来帮我们自动调用close方法,所以说无论打开文件是否出错都能自动正确的 ...
- day1--大数据概念,hadoop介绍,hdfs整体运行机制
1.什么是大数据 基本概念 在互联网技术发展到现今阶段,大量日常.工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用 ...
- 12、Cocos2dx 3.0游戏开发找小三之3.0中的生命周期分析
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我们执行了第 ...
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle DP
C. Logo Turtle A lot of people associate Logo programming language with turtle graphics. In this c ...
- Windows 平台上长路径名文件的解决方法
https://www.ibm.com/developerworks/cn/java/j-lo-longpath.html
- 【BZOJ 3211&3038】 花神游历各国 & 上帝造题的七分钟2
[题目链接] [BZOJ 3211] 点击打开链接 [BZOJ 3038] 点击打开链接 [算法] 线段树 开根操作直接开到叶子节点,注意当区间中所有数都是0或1时,不需要开根 [代码] #inclu ...