题目描述

求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。

输入输出格式

输入格式:

r

输出格式:

整点个数

输入输出样例

输入样例#1:

4
输出样例#1:

4

说明

n<=2000 000 000

暴力很好打,但是这1000%是数论题。不就是推推式子嘛。

由于圆这个东西很棒棒,我们只需要考虑某一象限内的情况就行了。为了方便解题,我们取第一象限作研究对象。

因为x^2+y^2=n^2,变换一下,y^2=n^2-x^2=(n-x)(n+x)。

设gcd(n-x,n+x)=d,a=(n-x)/d,b=(n+x)/d,则有gcd(a,b)=1。

又由于y^2=a*b*d^2,且都是整数,则a*b是完全平方数。又因gcd(a,b)=1,所以a,b都是完全平方数。

设a=u^2,b=v^2(显然gcd(u,v)=1),则:n-x=d*u^2,n+x=d*v^2,两式相加得2n=d*(u^2+v^2)(显然u<v)。

那么,我们获得了关于u和v的约数条件:

1.u^2+v^2=2n/d;

2.gcd(u,v)=1;

3.u<v;

那么,我们可以先通过O(sqrt(2n))的时间枚举d,然后通过sqrt(d)的时间枚举u,然后进行3个判断。时间复杂度约为O(2n^0.75)。

 #include<bits/stdc++.h>
 #define LL long long
 using namespace std;
 int n,ans;
 int gcd(int x,int y){return y?gcd(y,x%y):x;}
 void calc(LL oth){
     ; u<=sqrt(oth); u++){
         int v=sqrt(oth-u*u);
         if (u>=v) continue;
         if (u*u+v*v!=oth) continue;
         ) continue;
         ans++;
     }
 }
 int main(){
     scanf(;
     ; i<=sqrt((LL)n*); i++)
         %i==) calc(i),calc((LL)n*/i);
     printf(+);
     ;
 }

[洛谷 P2508] 圆上的整点的更多相关文章

  1. 【数论】[圆点坐标]P2508圆上的整点

    题目描述 求一个给定的圆\(x ^2 +y ^2 = r ^2\),在圆周上有多少个点的坐标是整数 Solution 圆上的点坐标通解:\(x = d\frac{v^2-u^2}{2},y = duv ...

  2. 2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ π )

    2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ \(\pi\) ) https://www.luogu.com.cn/problem/P2508 题意: 求一个给定的圆 \( ...

  3. 「Luogu P2508」[HAOI2008]圆上的整点 解题报告

    题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...

  4. 【BZOJ1041】[HAOI2008]圆上的整点

    [BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...

  5. 【BZOJ1041】圆上的整点(数论)

    [BZOJ1041]圆上的整点(数论) 题面 BZOJ 洛谷 题解 好神仙的题目啊. 安利一个视频,大概是第\(7\)到\(19\)分钟的样子 因为要质因数分解,所以复习了一下\(Pollard\_r ...

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

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

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

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

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

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

  9. 1041: [HAOI2008]圆上的整点

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

随机推荐

  1. DPDK安装方法 17.12.13

    DPDK安装方法 17.12.13 Ubuntu: $ git clone https://github.com/DPDK/dpdk.git $ cd dpdk/ $ export RTE_ARCH= ...

  2. React native 开发如何使用阿里的icon

    首先是通过Text来引用的 但是区分是 familay <Text style={{fontFamily:'iconfont', fontSize:fontsize, color:this.st ...

  3. RN 实现简易浏览器

    import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Dimensions, ...

  4. SourceTree/git解决pre-commit hook failed的问题

    一. git commit -m 'xxx' 出现问题 今天在上传项目的时候在commit阶段遇到一个问题,无论是在Sourcetree上传还是用命令git commit -m 'xxx'都报了一下错 ...

  5. 【六】php 错误异常处理

    错误异常处理 概念:代码在try代码块被调用执行,catch代码块捕获异常 异常需要手动抛出 throw new Exception (‘message’,code) throw将出发异常处理机制 在 ...

  6. 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》

    Spring框架是轻量级的企业级开发一站式解决方案 Spring使用简单的POJO Plain Old Java Object 无限制的普通Java对象 Spring Framework Runtim ...

  7. ORA-03113: end-of-file on communication channel(归档满处理方法)

    归档放在flash_recovery目录,由于归档占满了闪回目录,数据库启动报错ORA-03113: end-of-file on communication channel tail -1200f ...

  8. .NET Core 管道

    从用户发请求到服务器响应返回数据 请求从 Request进去    先经过 Middleware(中间件) 然后经过AuthoriationFilters授权验证(token验证和 多租户验证) 在经 ...

  9. java.io.FileNotFoundException异常,一是“拒绝访问”,二是“系统找不到指定路径”

    关于java.io.FileNotFoundException异常 因为这个异常抛出俩种情况:一是“拒绝访问”,二是“系统找不到指定路径” 这里只讲明什么时候抛拒绝访问,什么时候抛找不到指定路径. 原 ...

  10. HDUOJ 不容易系列之(4)——考新郎

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2049 一开始我的想法就是使用错排公式,先使用全排列从N对中选出M对,然后再使用错排对选出的M对进行错排计 ...