bzoj1041
基于圆的对称性,我们只需要考虑第一象限的整点即可
满足条件的x,y都是整数
数学上这类问题我们通常用一个量表示另一个量
y^2=(r-x)(r+x) (r-x)(r+x)要是完全平方数
令d=gcd(r-x,r+x)
则y^2=d^2*a*b a=(r+x)/d b=(r-x)/d;
不难发现此时(a,b)=1 a≠b (不考虑坐标轴)
要想是完全平方数即a是完全平方数,b也是完全平方数
不难想到要先穷举d
通过a=(r+x)/d b=(r-x)/d;可整理得a+b=2r/d 也就是说d是2r的约数
穷举d的范围显然是1~sqrt(2r) O(sqrt(2r))
对于确定的d,我们再穷举a(1^2,2^2……) 这样我们就可以确定唯一的b(因为在第一象限)
然后在验证一下b是否是完全平方数,a,b是否互质即可
var d,dd,r,ans,a:int64;
i,m:longint;
b:double; function gcd(a,b:int64):int64;
begin
if b= then exit(a)
else exit(gcd(b,a mod b));
end; function check(a,b:double):boolean;
var x,y:int64;
begin
if b=trunc(b) then
begin
x:=int64(trunc(a))*int64(trunc(a));
y:=int64(trunc(b))*int64(trunc(b));
if (gcd(x,y)=) and (a<>b) then exit(true);
end;
exit(false);
end; begin
readln(r);
m:=trunc(sqrt(*r));
for i:= to m do
begin
d:=int64(i);
if *r mod d= then
begin
a:=;
while (a<trunc(sqrt(r/d))) do
begin
inc(a);
b:=sqrt((*r/d)-a*a);
if check(a,b) then inc(ans);
end;
dd:=*r div d;
if dd<>d then
begin
a:=;
while (a<trunc(sqrt(r/dd))) do
begin
inc(a);
b:=sqrt(*r/dd-a*a);
if check(a,b) then inc(ans);
end;
end;
end;
end;
writeln(ans*+);
end.
bzoj1041的更多相关文章
- 【bzoj1041】圆上的整点
题意 给定一个圆\(x^2+y^2=z^2\),求圆周上有多少个点的坐标是整数. \(r\leq 2*10^9\) 分析 这道题目关键要知道一些勾股数的性质,剩下的就很好处理了. 勾股数的性质 参考: ...
- 隱藏在素數規律中的Pi -- BZOJ1041解題報告
退役狗在刷程書的過程中看到了一個有趣的視頻, 講解了一個有趣的問題. 在網上隨便搜索了一下居然還真的找到了一道以它爲背景的OI題目, BZOJ1041. 下面的內容會首先回顧一下視頻所討論的知識, 有 ...
- 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]圆上的整点
[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 ...
- bzoj1041题解
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数.r<=2000 000 000 这道题刚看时,就明白暴力不能解决一切.要是r^2<=20亿,还可以sqrt循环, ...
- [BZOJ1041] [HAOI2008] 圆上的整点 (数学)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- [bzoj1041][HAOI2008]圆上的整点
我能想得出怎么做才奇怪好吗 题解:http://blog.csdn.net/csyzcyj/article/details/10044629 #include<iostream> #inc ...
- BZOJ1041:[HAOI2008]圆上的整点(数论)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
随机推荐
- Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群
Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群 >>>>>>>>>>>>>> ...
- 关于js当中一些糟糕的特性
首先,不可否认,js是一门具有许多优秀特性的弱类型语言,但是这门语言在设计之初就投入了工程实践,没有经历严格的实验室测试,以致力于它是如此的粗糙,在相当长的一段时间很不受开发者待见,被视为一门玩具性的 ...
- bootstrap 模态框关闭状态怎么获取
比如现在有个场景,一个事件 需要在模态框关闭之后再执行自己的逻辑,先上图: 参考官网说明:http://v3.bootcss.com/javascript/#modals-events //每次关闭模 ...
- DataGridView编辑实时生效和索引-1没有值问题
1. 问题:DataGridView单元格编辑后,只有离开焦点时,编辑的内容才会生效(在绑定的DataSource中生效). 使用 this.dataGridView1.CommitEdit(Dat ...
- Asp.net: WebForm基础上构建Mvc的方法
添加引用: System.Web.Routing System.Web.Abstractions System.Web.Mvc 添加文件夹: Controllers, Views, Views / ...
- 在C#中实现Socket端口复用
转载:http://www.csharpwin.com/csharpspace/68.shtml 一.什么是端口复用: 因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在 ...
- power shell upload file to azure storage
# Azure subscription-specific variables. $storageAccountName = "storage-account-name" $con ...
- (转) c# ExecuteNonQuery() 返回值 -1
这是之前我遇到问题,在网上找解决方法时找到的,当时复制到txt文档了,今天整理笔记又看到了,贴出来,便于以后查阅.原文的作者没记住~~ 查询某个表中是否有数据的时候,如果用ExecuteNonQuer ...
- html》meta标签笔记
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- AdaBoost原理,算法实现
前言: 当做重要决定时,大家可能综合考虑多个专家而不是一个人的意见.机器学习处理问题也是如此,这就是元算法背后的思路.元算法是对其他算法进行组合的一种方式,前几天看了一个称作adaboost方法的介绍 ...