【BZOJ1041】[HAOI2008]圆上的整点

题面

bzoj

洛谷

题解

不妨设\(x>0,y>0\)

\[x^2+y^2=r^2\\
y^2=(x+r)(x-r)
\]

设\(r-x=ud,r+x=vd,(u,v)=1\)

\[y^2=d^2uv
\]

\(u,v\)一定为完全平方数

则\(u=s^2,v=t^2\)且必有\((s,t)=1\)

\[2r=(u+v)d=(s^2+t^2)d\\
\Rightarrow\\
x=\frac{t^2-s^2}{2}d\\
y=dst\
\]

然后枚举\(2r\)的约数即可

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long ll;
ll R, ans;
int main () {
cin >> R;
for (ll i = 1; i * i <= 2 * R; i++) {
if (2 * R % i == 0) {
ll d = i;
for (ll s = 1; s * s <= 2 * R / d; s++) {
ll t = sqrt(2 * R / d - s * s);
if (s * s + t * t == 2 * R / d && __gcd(s, t) == 1) {
ll x = (t * t - s * s) / 2 * d, y = d * s * t;
if (x > 0 && y > 0 && x * x + y * y == R * R) ans += 2;
}
}
if (i * i != R) {
d = 2 * R / i;
for (ll s = 1; s * s <= 2 * R / d; s++) {
ll t = sqrt(2 * R / d - s * s);
if (s * s + t * t == 2 * R / d && __gcd(s, t) == 1) {
ll x = (t * t - s * s) / 2 * d, y = d * s * t;
if (x > 0 && y > 0 && x * x + y * y == R * R) ans += 2;
}
}
}
}
}
printf("%lld\n", (ans + 1) * 4);
return 0;
}

【BZOJ1041】[HAOI2008]圆上的整点的更多相关文章

  1. 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 ...

  2. BZOJ1041 [HAOI2008]圆上的整点 【数学】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4631  Solved: 2087 [Submit][S ...

  3. [BZOJ1041] [HAOI2008] 圆上的整点 (数学)

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  4. BZOJ1041:[HAOI2008]圆上的整点(数论)

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  5. 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 ...

  6. [bzoj1041][HAOI2008]圆上的整点

    我能想得出怎么做才奇怪好吗 题解:http://blog.csdn.net/csyzcyj/article/details/10044629 #include<iostream> #inc ...

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

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

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

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

  9. bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 853[Submit][Stat ...

随机推荐

  1. 【Oracle】存储过程写法小例子

    1.存储过程的基本语法: CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type) IS 变量1 类型(值范围); 变量2 类 ...

  2. MySQL Group Replication配置

    MySQL Group Replication简述 MySQL 组复制实现了基于复制协议的多主更新(单主模式). 复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事 ...

  3. C++ Boost在Windows和Linux下的编译安装

    再debian下直接apt-get install gcc g++就可以了.按照类似的逻辑,再Fedora下yum install gcc g++ 报告无法找到g++包. 差了一下,原来这个包的名字叫 ...

  4. 对象.isdigit() ,只能判断全是数字的字符串

    s = "55p"" print(s.isdigit()) # False s2 = "5568" print(s2.isdigit()) # Tru ...

  5. 2018.08.31 10:57 swift 学习心得

    其实我一直很喜欢swift,我觉得Xcode很先进,买了一台MacBook就可以操作了,蛮好的. var str = "Hello, playground" var myVaria ...

  6. 前端技术-HTML页面的加载

    HTML页面的加载 HTML页面的加载实际上是基于http过程+浏览器对数据的解析渲染. http协议的请求过程是基于TCP协议的.http是要基于TCP连接基础上,简单的说,TCP单纯建立连接,不涉 ...

  7. 解析JS运动

    解析JS运动 物体运动原理:通过改变物体的位置,而发生移动变化. 任何运动都是相对的,就像物理中的运动公式:s(要达到的)=s0(当前的样式值)+vt. 方法:      1.运动的物体使用绝对定位 ...

  8. springMVC參数传递

    本文是本人在学习网络视屏springMVC的过程中的学习笔记. 为了更便于理解我决定从实际使用的角度解释. 我们在浏览器输入地址 http://localhost:8080/springMVC6/us ...

  9. BZOJ2281:[SDOI2011]黑白棋(博弈论,组合数学,DP)

    Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...

  10. P2110 欢总喊楼记

    题目描述 诗经有云: 关关雎鸠,在河之洲.窈窕淑女,君子好逑. 又是一个被风吹过的夏天--一日欢总在图书馆中自习,抬起头来,只见一翩跹女子从面前飘过,真是回眸一笑百媚生,六宫粉黛无颜色!一阵诗情涌上欢 ...