【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. React:组件的生命周期

    在组件的整个生命周期中,随着该组件的props或者state发生改变,其DOM表现也会有相应的变化.一个组件就是一个状态机,对于特定地输入,它总返回一致的输出. 一个React组件的生命周期分为三个部 ...

  2. Python日志记录(logging)

    import logging logfile = 'e:\\a.txt' # logging.basicConfig(filename=logfile,level=logging.INFO) # lo ...

  3. Python学习---爬虫学习[scrapy框架初识]

    Scrapy Scrapy是一个框架,可以帮助我们进行创建项目,运行项目,可以帮我们下载,解析网页,同时支持cookies和自定义其他功能. Scrapy是一个为了爬取网站数据,提取结构性数据而编写的 ...

  4. Linux 系统的IP与域名解析文件[局域网的DNS]

    系统的IP与域名解析文件[局域网的DNS] 局域网的DNS: 域名和主机名对应的工具,服务器直接通过域名,方便迁移 # 修改配置 vim /etc/hosts 直接添加: 192.138.25.129 ...

  5. PHP利用二叉堆实现TopK-算法的方法详解

    前言 在以往工作或者面试的时候常会碰到一个问题,如何实现海量TopN,就是在一个非常大的结果集里面快速找到最大的前10或前100个数,同时要保证 内存和速度的效率,我们可能第一个想法就是利用排序,然后 ...

  6. strip() 只去头尾的,不能去中间

    # b = st.strip("|") # strip() 只去头尾的,不能去中间

  7. ubuntu安装pycharm并设置快捷方式

    一.tar.gz包安装 从官网下载压缩包 tar zxfv pycharm-professional-2017.3.3.tar.gz cd pycharm-2017.3.3 ./bin/pycharm ...

  8. ios的图片解压

    YYKit SDWebImage FLAnimatedImage YYKit YYCGImageCreateDecodedCopy YYImageCoder 1 2 3 4 5 6 7 8 9 10 ...

  9. 【洛谷】【st表+模拟】P1311 选择客栈

    [题目描述:] 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖 ...

  10. 【转】 iOS播放视频时候,忽略设备静音按钮

    用户有时会在静音模式下观看视频,如果不主动设置的话,视频是没有声音的,通过AVAudioSession可开启以视频为主导的播放模式, 首先需要导入,AVFoundtion.framework,在控制播 ...