原题传送门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. Unity5.6偶尔不能创建项目解决办法

    Unity5.6偶尔启动后,不能创建项目,解决办法如下: 1.打开Unity 2.在开始窗口退出当前登录的账户 3.重新登录 4.然后就可以创建新项目了 5.如果以上方法不生效,关闭Unity再重试一 ...

  2. 签名APK后仍然出现INSTALL_PARSE_FAILED_NO_CERTIFICATES的解决方案

    修改apk里的dex并且修复后重新打包进apk里,使用signapk.jar签名后安装仍然出现INSTALL_PARSE_FAILED_NO_CERTIFICATES,搜了很久,使用了多种方法签名仍然 ...

  3. Fluentd插件使用方法

    这里主要介绍从MongoDB同步数据到ODPS.ruby环境的搭建以及fluent_plugin_mongo_odps插件的安装.1.准备工作1.1安装环境要求Ruby 2.1以上Gem 2.4.5以 ...

  4. UZH slam 两种相机

    1.event camera:http://rpg.ifi.uzh.ch/research_dvs.html 2.SCAMP Vision Sensor:https://personalpages.m ...

  5. mysql分布式技术

    所有的分布式技术 dobble zokkiper ngix

  6. ubutu下source命令问题(复制)

    最近一段时间在使用Bash on Ubuntu on Windows做shell脚本调试时发现在脚本中使用source时会报错,上网查了下才了解到原来是在Ubuntu中使用的并不是bash,而是使用 ...

  7. beta版本冲刺六

    目录 组员情况 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团队签入记 ...

  8. Good Time 冲刺 三

    第三天 日期:2018.6.16 一.今日完成任务情况及遇到的问题 王怡镔:继续在学习微信小程序的设计,完善设计发现页面,开始编写发现页面 于鑫宇:配合黄鹤的工作,学习端口相关知 胡雅馨:继续改进优化 ...

  9. 做一个iframe的弹出框

    群里有个人想在微信页面里面加弹出框.作为前端的我,想着不可能这样做.后来一个人说了: A:如果对方没有防盗链的话,你可以建个页面,内置iframe 到他的页面,然后把url 的参数也传入你的ifram ...

  10. Codeforces Round #391 div1 757F (Dominator Tree)

    首先先膜杜教orz 这里简单说一下支配树的概念 支配树是对一个有向图来讲的 规定一个起点s,如果s到v的路径上必须经过某些点u,那么离s最近的点u就是v的支配点 在树上的关系就是,v的父亲是u. 一般 ...