bzoj1041题解
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。r<=2000
000 000
这道题刚看时,就明白暴力不能解决一切。要是r^2<=20亿,还可以sqrt循环,这样的话只能用数学方法了。
(嘘!本数学方法的关键一步是借鉴来的)
x^2+y^2=r^2
x^2=r^2-y^2
x^2=(r+y)(r-y)
我们设gcd(r+y,r-y)=d //不知道什么是GCD?就是最大公因数
再设m=(r+y)/d,n=(r-y)/d,易得gcd(m,n)=1
因为m*n=x^2/d/d,即m*n是平方数。
又因为m和n互质,所以它们分别是平方数,我们还可以设m=u^2,n=v^2 。
带回去,r+y=d*u^2,r-y=d*v^2。
两式相加,2r=d(u^2+v^2)
加到这里,这些字母都表示整数。
现在我们的目标达成了:即把r^2降成了r。
我们可以枚举sqrt(2r),再依次判断是否有整数的u,v,且它们是否互质 。
最后还要注意以下:首先,所得结果要乘4 ,比如(3,4),还有(3,-4),(-3,4),(-3,-4)。
当然,如果x=0或y=0是一定可以的。最后还要加上4,即(0,r),(r,0),(0,-r),(-r,0)。(呵呵,r不等于0,O(∩_∩)O~~)
以下附代码:
#include<cstdio>
#include<cmath>
using namespace std;
const double jing=0.00000001;
long gcd(long a,long b){if (a%b==0) return b;return gcd(b,a%b);}
long long ans=0,r,temp;long i,j;double t;
int main()
{
scanf("%lld",&r);r*=2;
for (i=1;i<=trunc(sqrt(r));i++)
if (r%i==0)
{
temp=r/i;
for (j=1;j<=trunc(sqrt(temp));j++)
{
t=trunc(sqrt(temp-j*j));if (t<=j) break;
if (t*t+j*j==temp){if (gcd(j,t)==1) ans++;}
}
if (r/i==i) continue;temp=i;
for (j=1;j<=trunc(sqrt(temp));j++)
{
t=trunc(sqrt(temp-j*j));if (t<=j) break;
if (t*t+j*j==temp){if (gcd(j,t)==1) ans++;}
}
}
ans*=4;ans+=4;printf("%ld",ans);
return 0;
}
bzoj1041题解的更多相关文章
- 【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 ...
- HAOI2008题解
又来写题解辣-然而并不太清楚题目排列情况...不管辣先写起来- T1:[bzoj1041] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
随机推荐
- 2016 UESTC Training for Dynamic Programming
强行做做试试看吧. http://acm.hust.edu.cn/vjudge/contest/124721#overview 密码:mytrain C - 柱爷与咸鱼神功 一个简单01背包. #in ...
- 关于springmvc时request的getReader()和getInputStream()只能调用一次的解决办法
最近准备在原有的SSM项目的基础上添加完善的日志分析,由于是APP的后台系统,之前在规划APP的时候,并没有在APP上做埋点的处理,而如果想要进行埋点处理的话,对于未能新升级的APP用户来说,就是去了 ...
- URL的标准格式
URL的标准格式 scheme://host:port/path?query#fragment 1. scheme:协议 2. host:主机 3. port:端口 4. path:路径 5. qu ...
- 卸载XCode插件的方法
1.Finder--前往---前往文件夹--输入~/Library/Developer/Xcode/Plug-ins 2.删除要卸载的插件即可.
- SonarQube+Jenkins,搭建持续交付平台
前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...
- MySQL优化总结,百万级数据库优化方案
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 屌丝技能--转Json(Newtonsoft.Json.dll)
妈妈再也不用为我转Json而担忧了!! 很简单,没什么好说明的,嗯! public class ShowTablePage<T> where T : class, new() { publ ...
- 矢量量化(VQ)
作者:桂. 时间:2017-05-31 21:14:56 链接:http://www.cnblogs.com/xingshansi/p/6925955.html 前言 VQ(Vector Quant ...
- git上传本地项目到github
git软件下载地址:https://git-scm.com/download/ 1. 在GitHub上建立项目登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击 ...
- Delphi使用Zint生成QR二维条码(zint.dll)
Delphi使用Zint生成QRCODE 本文使用的Zint Barcode Library(zint.dll)版本为2.6.0,和之前使用的2.4.3版本在zint_symbol这个结构体上会有差异 ...