1041: [HAOI2008]圆上的整点

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 4298  Solved: 1944
[Submit][Status][Discuss]

Description

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

Input

只有一个正整数n,n<=2000 000 000

Output

整点个数

Sample Input

4

Sample Output

4

HINT

  1. /*
  2. * @Author: lyuc
  3. */
  4.  
  5. /*
  6. 题意:就是求有多少斜边为n的勾股数;
  7.  
  8. 思路:y*y=r*r-x*x
  9. =(r-x)*(r+x)

  10. d=GCD(r-x,r+x)
  11. 那么
  12. r-x=d*u*u
  13. r+x=d*v*v
  14. 并且GCD(u,v)==1
  15. 得到
  16. r=d*(u*u+v*v)/2
  17. y=d*d*u*u*v*v
  18. x=d*(v*v-u*u)
  19.  
  20. 这样枚举r的因子,在枚举u,注意x,y,r的范围就可以了
  21.  
  22. */
  23. #include <bits/stdc++.h>
  24.  
  25. #define LL long long
  26.  
  27. using namespace std;
  28.  
  29. LL r;
  30. LL res;
  31.  
  32. LL gcd(LL a,LL b){ return b==?a:gcd(b,a%b); }
  33.  
  34. void cal(LL d){
  35. LL v;
  36. for(LL u=;u<=sqrt(*r*1.0/d);u++){
  37. v=(LL)sqrt( (*r*1.0/d-u*u)*1.0 );
  38. if(gcd(u,v)==&&u<=v&&d*(u*u+v*v)==*r){
  39. res++;
  40. }
  41. }
  42. }
  43.  
  44. int main(int argc, char *argv[])
  45. {
  46. //freopen("in.txt","r",stdin);
  47. res=;
  48. scanf("%lld",&r);
  49. for(LL i=;i<=sqrt(*r*1.0);i++){
  50. if(*r%i==){
  51. if((LL)i*i==*r){
  52. cal(i);
  53. }else{
  54. cal(i);
  55. cal(*r/i);
  56. }
  57. }
  58. }
  59. printf("%lld\n",res*);
  60. return ;
  61. }

1041: [HAOI2008]圆上的整点的更多相关文章

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

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

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

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

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

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

  4. BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】

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

  5. BZOJ(2) 1041: [HAOI2008]圆上的整点

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

  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]圆上的整点:数学【费马平方和定理】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...

  8. 【BZOJ】1041: [HAOI2008]圆上的整点(几何)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1041 所谓的神题,我不会,直接题解..看了半天看懂题解了.详见hzwer博客 这题呢,我只能 ...

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

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数.Input rOutput 整点个数Sample Input4Sample Output4HINT n ...

随机推荐

  1. 使用Pano2VR 切割图片

    图片转换好之后得到一组立方体面片.

  2. Apache Spark 2.2.0 中文文档 - Submitting Applications | ApacheCN

    Submitting Applications 在 script in Spark的 bin 目录中的spark-submit 脚本用与在集群上启动应用程序.它可以通过一个统一的接口使用所有 Spar ...

  3. 【NOIP】OpenJudge - 15-03:雇佣兵

    #include<stdio.h>//雇佣兵 int main() { ; scanf("%d%d%d",&M,&N,&X); n=N; m=M ...

  4. 我的three.js学习记录(一)

    在之前因为项目需要使用WebGL技术做网页应用,但是苦于自己没有接触,只是使用过OpenGL.然后接触到了thre.js这个第三方库之后我突然心情很愉快,这将节省我很多时间. 过了这个项目之后,就再也 ...

  5. html阶段测试

    1.简述src和href的区别? 2.在html页面的head中定义属性<meta http-equiv="X-UA-Compatible" content="IE ...

  6. WPF 快捷方式

    http://www.cnblogs.com/gnielee/archive/2010/07/16/wpf-custom-hotkey-command.html

  7. MVVM 模版里的控件怎样触发命令

    public class BaseWindow : Window { public BaseWindow() { InitializeStyle(); //给样式的控件加载事件 this.Loaded ...

  8. 画布跟js.oop

    <Canvas> 是HTML5中新出现的一个元素.就是可以通过  JS绘制图形. 画布(Canvas)是一个没有内容也没有边框的矩形区域.我们可以控制里面的每一个像素. 下面我们首先定义一 ...

  9. 【特效】jquery选项卡插件,页面多个选项卡统一调用

    把选项卡整合了一下,写成个插件,这样可以整个站,或整个页面有多个选项卡时,统一调用.代码的具体注意事项已经写进注释了.用于js获取元素的class名称必须有,选项卡本身的样式,另再取一个名字来设置(本 ...

  10. 什么是UUID?

    1.定义 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundatio ...