bzoj 1041 圆上的整点

【BZOJ 1041】【HAOI 2008】圆上的整点 【数学】 题目跳转: http://www.lydsy.com/JudgeOnline/problem.php?id=1041 Description   求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。 Input   只有一个正整数n,n Output   整点个数 Sample Input 4 Sample Output 4 阅读详情
这里先只考虑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<v

有2r=d*(u^2+v^2),y=d*u*v,x=d(v^2-u^2)/2

枚举2r的约数d,再花费sqrt(2r/d)的时间枚举u,求出v=sqrt(2r/d-u^2)然后判断gcd(u,v)=1

最后结果乘以4(四个象限)+4(坐标轴上)即可

/**************************************************************
    Problem: 1041
    User: ******
    Language: C++
    Result: Accepted
    Time:92 ms
    Memory:1284 kb
****************************************************************/
 
#include <vector>
#include <list>
#include <limits.h>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string.h>
#include <stdlib.h>
#include <cassert>
 
using namespace std;
 
int main() {
    long long r;
    cin >> r;
    long long d, a, b;
    long long ans = 0;
    for (d = 1; d * d <= 2*r; ++d) {
        if ((2 * r) % d) continue;
        long long t = (2 * r) / d;
        for (a = 1; a * a <= t; ++a) {
            b = sqrt(t - a * a);
            if (b * b != t - a * a) continue;
            if (a >= b) continue;
            if (__gcd(a, b) > 1) continue;
            // cout << d << " " << a << " " << b << endl;
            // cout << "X: " << - a * a * d + r << endl;
            ++ans;
        }
        if (d * d == 2 * r) continue;
        t = d;      
        for (a = 1; a * a <= t; ++a) {
            b = sqrt(t - a * a);
            if (b * b != t - a * a) continue;
            if (a >= b) continue;
            if (__gcd(a, b) > 1) continue;
            // cout << t << " " << a << " " << b << endl;
            // cout << "X: " << - a * a * (2*r/d) + r << endl;
            ++ans;
        }
    }
    ans = (ans + 1) * 4;
    cout << ans << endl;
    return 0;
}
转摘至: http://blog.youkuaiyun.com/lwfcgz/article/details/39927801

基于verilog的16QAM调制 思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差... 阅读详情

相关推荐

DLMS—Cryptographic algorithms—(Green-Book)加密算法

密码学是数学的一个分支,基于数据的转换,并且可以用来提供多种安全服务:保密性、数据完整性、认证、授权和不可否认性。密码学依赖于两个基本组成部分:算法(或密码学方法)和密钥。算法是一个数学函数,而密钥是在转换过程中使用的参数。密码算法和密钥用于对数据应用密码保护(例如,加密数据或生成数字签名),以及移除或检查保护(例如,解密加密的数据或验证数字签名)。密码哈希函数:这类函数不需要密钥(尽管它们可以以使用密钥的模式使用)。哈希函数通常用作算法的一个组成部分,以提供安全服务。见9.2.3.2节。对称密钥算法。

一个bug是bug,多个bug能work 1706

圆内整点

壹 HAOI2008 圆上的整点 一 题目描述 求一个给定的圆(x2+y2=r^2),在圆周上有多少个点的坐标是整数。 关于这题的大概思路 考虑平方数 a2a^2a2 mod 4 不是0就是1,平方数b2b^2b2同理; 因此假设某素数p=(a−bi)∗(a+bi)=a2+b2p=(a-bi)*(a+bi)=a^2+b^2p=(a−bi)∗(a+bi)=a2+b2 则ppp mod 4 同余 0,...

Dutch_Habor的博客 2012

通信工程学习:什么是ASK振幅键控、FSK频移键控、PSK相移键控

ASK、FSK和PSK是三种基础数字调制技术。ASK通过改变载波振幅传输信息,实现简单但抗干扰弱;FSK利用频率变化传递信号,抗干扰较强但频谱利用率一般;PSK通过相位变化编码数据,抗干扰和频谱效率最优但同步要求高。三种技术各具特点,分别适用于不同通信场景:ASK用于低速光纤通信,FSK常见于无线广播,PSK则广泛应用于Wi-Fi、蓝牙等现代通信系统。

limengshi138392的博客 8717

【luogu P2508】圆上的整点(高斯素数模板)

给你一个圆,问你圆周上有多少个点的坐标是整点。

欢迎您的光顾awa 471

基于ANSYS的电磁兼容仿真教程

最近,在做某系统的EMC仿真,使用ANSYS套件,对仿真学习做简要记录。本书简介与目录如下:本书配套有:视频教程+工程源文件+彩色仿真图片,下载链接如下:(审核中)第1章 基础知识1.1 电磁兼容基础​​​MS2、EMC三要素:3、 国际无线电干扰特别委员会标准:CISPR标准4、电磁兼容测试认证:传导发射(CE)、传导敏感度(CS)、辐射发射(RE)和辐射敏感度(RS)测试。

weixin_42508010的博客 2050

别再折腾CUDA了!Win11上VSCode一键配置PyTorch GPU环境(附Anaconda虚拟环境避坑指南)

本文提供Win11系统下使用VSCode和Anaconda一键配置PyTorch GPU环境的详细指南,解决CUDA版本冲突等常见问题。通过conda的原子化依赖解决方案,安装时间从2小时缩短至15分钟,适合深度学习初学者快速搭建开发环境。

weixin_33101399的博客 246

圆上整点(结论)

圆上整点(结论) 题意 给定x2+y2=r2x^2+y^2=r^2x2+y2=r2,求圆上整点个数。 结论: 对rrr质因数分解,只有质数对应的次数cnt mod 4=1cnt\bmod 4=1cntmod4=1才有2cnt+12cnt+12cnt+1乘积贡献,最后答案×4\times 4×4 (因为是4个象限)。 int main(){ ll r,s=1;scanf("%lld",&r); for(ll i=2;i*i<=r;i++) if(r%i==0){ int c=0;w

Harris-H的博客 676

性能测试软件(LR12) 具体汉化(中文)方法

LoadRunner 12 的下载及安装详细过程请参考:https://blog.youkuaiyun.com/xiao66guo/article/details/105465854 1、在LoadRunner文件中找到 Setup.exe 可执行文件,并以管理员的身份运行: C盘 —> Temp—>HP LoadRunner 12.02 Community Edition—> D...

多谢大人光临寒舍,请随便看看,喝口茶吧 ☕️☕️☕️ 1992

BZOJ 1041 圆上的整点 数论

题意:给出R,问半径为R的圆上有多少个整数点? R&lt;=2e9.x^2+y^2=r^2.  -&gt; (r+x)(r-x)=y^2 . 令d=gcd(r+x,r-x).m=(r+x)/d,n=(r-x)/d.则y^2= d^2*m*n . 因为gcd(m,n)=1 所以m,n都为完全平方数.(m,n素因子分解后的幂都为偶数.)那么让m=u^2,n=v^2.  得:r+x=d*u^2,r-x=...

noone0的博客 930

Verilog实战:手把手教你实现四路组相联Cache(附完整代码解析)

本文提供了一份详细的Verilog实战指南,手把手教你实现一个四路组相联Cache。内容涵盖从设计规格、核心存储阵列、LRU替换策略到状态机设计的完整流程,并附有代码解析与优化技巧,旨在帮助硬件设计者掌握Cache控制器的RTL实现与调试方法。

pp12345的博客 515

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 649

浅谈高斯素数([HAOI2008]圆上的整点)

只能研究到这一步了,剩下的要从头学习Min_25筛了

偶耶的博客 1594

使用C/C++复制图像

要使用上述代码,需要将输入图像和输出图像的文件名替换为实际的图像文件名。当程序执行完毕后,将会在当前目录下生成一个名为"output.jpg"的图像文件,其中包含与输入图像完全相同的图像数据。要使用上述代码,需要将输入图像和输出图像的文件名替换为实际的图像文件名。当程序执行完毕后,将会在当前目录下生成一个名为"output.jpg"的图像文件,其中包含与输入图像完全相同的图像数据。函数将输出图像保存到文件中。在这个示例中,我们假设输入图像是一个常见的JPEG图像,文件名为"input.jpg"。

CyberWarpX的博客 728

【BZOJ1041】[HAOI2008]圆上的整点

【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+...

127

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BZOJ 1041 [HAOI2008] 圆上的整点 题解与分析

[HAOI2008]圆上的整点 Time Limit: 10 Sec   Memory Limit: 162 MB Description 平面上有一个圆, 圆心坐标为(0,0),半径为n. 问圆周上有多少个整点. 整点的定义即x,y坐标均为整数的点.  input 输入文件只有一个正整数n. Output 输出文件为一个正整数, 即圆周上有多少个整点.

初学者 6190

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【数论乱搞】BZOJ1041 [HAOI2008]圆上的整点

题面在这里其实就是乱搞题首先只要考虑第一象限的整点就可以了,答案可以很快由此得到考虑如下: r2=x2+y2⇒y2=(r−x)(r+x) r^2=x^2+y^2 \\ \Rightarrow y^2=(r-x)(r+x) \\ 设(r−x)(r-x)和(r+x)(r+x)的最大公约数为dd,则有: ⇒y2=d2(r−x)d(r+x)d \Rightarrow y^2=d^2 \frac {

linkfqy 1156

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【BZOJ 1041】圆上整点

1.题目链接。给定半径,找一下这个圆上有多少个整点。其实也就是格点。 2.这个题目其实是比较有意思的,做法也有很多种。比较常规的解法是: 到这里其实就好办了,因为x是一个平方数,A,B互质,所以A,B也应该是一个平方数。 ...

YG爱木木 1046

bzoj1041: [HAOI2008]圆上的整点

题面在这里 emmmm先来吐槽一下下~ %一发dsy上0ms的大佬们。。。 我就比较弱辣要200+ms,,QwQ 做法: 来做一些鬼畜的变形= = r2=x2+y2r^2=x^2+y^2 y2=r2−x2y^2=r^2-x^2 y2=(r+x)(r−x)y^2=(r+x)(r-x) y=(r+x)(r−x)−−−−−−−−−−−√y=\sqrt{(r+x)(r-x)} 设d=gc

juruo? juruo! 305

[BZOJ 1041] 圆上的整点

Description   求一个给定的圆(x2+y2=r2x2+y2=r2x^2+y^2=r^2),在圆周上有多少个点的坐标是整数 Input   只有一个正整数nnn,n≤2000000000n≤2000000000n\leq2000000000 Output   整点个数 Sample Input 4 Sample Output 4...

Deprecated Blog of MegaOwIer 1679

BZOJ 1041 圆上的整点

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1041 题意:求圆x^2+y^2=r^2上的整点。 思路:由于对称性,我们只需要计算第一象限的即可。 因此,我们首先枚举2r的约数d,令R=r/d,枚举u,v,使得u^2+v^2=R且(u,v)=1即可。  i64 n;i64 Gcd(i64 x,i64 y){    retu...

weixin_33909059的博客 194

【BZOJ1041】圆上的整点 数论

也是完全不会做,靠百度搜索出来的鬼东西。太数学了以至于自己需要想的地方不多。 既然要求圆上的整点,我们联想一下直线上的整点,是跟起点终点的gcd有关的?(事后诸葛亮) 已知圆中心对称,不妨设x&gt;0,y&gt;0求出第一象限点,最后加上坐标轴上的就好。 问题变成求x^2+y^2=r^2的整数解。接下来又到了抄抄抄的时间。 改写为y^2=r^2-x^2=(r+x)(r-x) 令d=gcd...

韵意丶魔法甜点城堡 496

【BZOJ 1041】 [HAOI2008]圆上的整点

数学推导~~ 手写推导过程~

Regina8023 1106

【BZOJ 1041】[HAOI2008]圆上的整点

【题目链接】:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 【题意】 【题解】 由圆的方程可得 X^2+Y^2=R^2 X^2=R^2-Y^2 X^2=(R+Y)(R-Y) 这里令 D = gcd(R+Y,R-Y); 则 gcd((R+Y)/D,(R-Y)/D)==1 那么 ...

134

bzoj1041[HAOI2008]圆上的整点

bzoj1041[HAOI2008]圆上的整点 题意: 求一个给定半径的圆圆周上有多少个点的坐标是整数。r≤2*109 题解: 数学神题,本弱只能转载一下黄学长的题解 “ 首先x²+y²=r²,变形得y²=(r+x)*(r-x)。令d=gcd(r+x,r-x),则A=(r-x)/d,B=(r+x)/d,A,B互质,用a,b代入,有y²=d²*A*B,由于d²,y²为完全平方数...

anheku1562的博客 163

bzoj1041 圆上的整点

Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。 Input r Output 整点个数 Sample Input 4 Sample Output 4 HINT n Source VFK在讨论版中惊呼: 但我没看。。 以下来自http://blog.youkuaiyun.com/csyzcy

lzr010506的博客 513
上一篇: Hdu 1506 Largest Rectangle in a Histogram
下一篇: Poj 2559 最大矩形面积 v单调栈
梁千仞
博客等级 码龄15年 12粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值