原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1041

我们只需要求第一象限内(不包括坐标轴)的点数然后ans=ans*4+4就好了

首先我们知道圆上点的方程关系

x*x+y*y=r*r

那么我们变下型

Y*Y=R*R-X*X

Y*Y=(R-X)*(R+X)        ①

我们令d=gcd(r-x,r+x)

设A=(r-x)/d;

B=(r+x)/d;

因为我们要求x为整数,那么需要A,B为整数

将A,B带回①可得

A*B*d*d=y*y

因为我们要求y为整数,那么需要A*B*d*d为完全平方数

因为点在第一象限内,所以A<>B,所以A,B应为完全平方数

那么当A,B为完全平方数时,x,y为整数

那么我们可以设A=a*a; B=b*b;

则有a*a=(r-x)/d;  b*b=(r+x)/d;

那么两式相加,得到a*a+b*b=2*r/d;

那么只要a,b为整数,就可以得到一组整点

那么我们可以知道d|2*r

所以我们可以枚举2*r的因数,对于每个因数(每个因数对应一对儿因数,分别是d和2*r/d)

假设因数是d的时候,因为a<b所以2*a*a<2*r/d, 所以a*a<r/d 那么我们可以枚举a<sqrt(r/d),

对于每个a我们可以算出b,相对应的A,B应满足gcd(A,B)=1且A<>B如果满足,就累加答案

 /**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
var
r :int64;
ans :int64; function gcd(a,b:int64):int64;
begin
if b>a then exit(gcd(b,a)) else
if b= then gcd:=a else gcd:=gcd(b,a mod b);
end; function check(y:int64;x:extended):boolean;
var
x1 :int64;
begin
if x=trunc(x) then
begin
x1:=trunc(x);
if (gcd(x1*x1,y*y)=) and (x1*x1<>y*y) then
begin
exit(true);
end;
end;
exit(false);
end; procedure main;
var
d, a :longint;
b :extended;
begin
read(r);
for d:= to trunc(sqrt(*r)) do
begin
if (*r) mod d= then
begin
for a:= to trunc(sqrt(r/d)) do
begin
b:=sqrt(((*r)/d)-a*a);
if check(a,b) then ans:=ans+;
end;
if d<>((*r) div d) then
for a:= to trunc(sqrt(d/)) do
begin
b:=sqrt(d-a*a);
if check(a,b) then ans:=ans+;
end;
end;
end;
writeln(ans*+);
end; begin
main; end.

bzoj 1041 数学推理的更多相关文章

  1. BZOJ 1041 数学

    思路: $x^2+y^2=r^2$$y=\sqrt{(r+x)(r-x)}$令$ d=gcd(r+x,r-x)$设A=$(r-x)/d$ $B=(r+x)/d$则$gcd(A,B)=1$$y^2=d^ ...

  2. bzoj 5334 数学计算

    bzoj 5334 数学计算 开始想直接模拟过程做,但模数 \(M\) 不一定为质数,若没有逆元就 \(fAKe\) 掉了. 注意到操作 \(2\) 是删除对应的操作 \(1\) ,相当于只有 \(1 ...

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

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

  4. BZOJ 1041 [HAOI2008]圆上的整点:数学

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...

  5. BZOJ 1041 圆上的整点 数学

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1041 题目大意:求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整 ...

  6. BZOJ 1041 [HAOI2008]圆上的整点:数学【费马平方和定理】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...

  7. BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】

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

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

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

  9. bzoj 1041 圆上的整点 分类: Brush Mode 2014-11-11 20:15 80人阅读 评论(0) 收藏

    这里先只考虑x,y都大于0的情况 如果x^2+y^2=r^2,则(r-x)(r+x)=y*y 令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u&l ...

随机推荐

  1. Leetcode代码补全——链表

    通过补全代码可以更深刻的体会到,链表就是一个存储方式,通过一单元的存储指向下一单元,而查看单元内容通过头部开始的指针依次遍历.这是leetcode里融合两个链表的题目,具体代码如下: #encodin ...

  2. 教程|要想Hadoop能够运行Python程序,就要会MRJob

    首先 要想Hadoop能够很流畅的Python程序,学习mrjob可能是最直接.最简单的方法了 你甚至都不要按安装部署Hadoop集群. mrjob拥有很多优秀的特性比如: 支持多步骤的MapRedu ...

  3. Mysql字符串截取:Left()、Right()、Substring()、Substring_index()

    在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些, mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结: ...

  4. (原创)BFS广度优先算法,看完这篇就够了

    BFS算法 上一篇文章讲解了DFS深度优先遍历的算法,我们说 DFS 顾名思义DEEPTH FIRET,以深度为第一标准来查找,以不撞南墙不回头的态度来发掘每一个点,这个算法思想get到了其实蛮简单. ...

  5. Python 3 学习笔记之——键盘输入和读写文件

    1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...

  6. Python调用MYSQL,将文件名和路径批量入库用法小结

    最近项目需要将大量的压缩文件导入到数据库中,所以开始总结用Python批量处理的办法,本次是首先将这些压缩文件的文件名提取出来,然后导入到数据库中. 由于涉及到路径的读取处理,所以方法有os模块和co ...

  7. IP数据报格式 及分组转发算法

    ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度——占 4 位,可表示的最大数值 是 ...

  8. ArcGIS API for javascript中搜索框的使用问题

    我们在开发中常常需要用搜索框去搜索地图上的某个数据,然后在地图上显示出来.这个时候我们要用到esri.dijit.Search().在设置里面的sources的时候,需要注意一点:必须要使用在线的fe ...

  9. vue 介绍的拓展

    计算属性 <div id="example"> <p>Original message: "{{ message }}"</p&g ...

  10. (转)MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode

    内核参数overcommit_memory : 它是 内存分配策略 可选值:0.1.2.0:表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并 ...