zoukankan      html  css  js  c++  java
  • bzoj1041 圆上的整点 数学

    题目传送门

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

      思路:没思路,看大佬的博客(转载自https://blog.csdn.net/csyzcyj),转载只为记录,详细的证明,大佬的博客已经写得很清楚了,不再赘述,数论题就是这样开心又头秃
    #include<bits/stdc++.h>
    #define CLR(a,b) memset(a,b,sizeof(a))
    using namespace std;
    typedef long long ll;
    long long R,ans=0;
    long long gcd(long long x,long long y){return x%y==0 ? y : gcd(y,x%y);}
    bool check(long long y,double x)
    {
          if(x==floor(x))
          {
                long long x1=(long long)floor(x);
                if(gcd(x1*x1,y*y)==1 && x1*x1!=y*y)//gcd(A,B)=1并且A!=B 
                      return true;
          }
          return false;
    }
    int main()
    {
    
          scanf("%lld",&R);
          for(long long d=1;d<=(long long)sqrt(2*R);d++)
          {
                if((2*R)%d==0)
                {
                      for(long long a=1;a<=(long long)sqrt(2*R/(2*d));a++)
                      {
                            double b=sqrt(((2*R)/d)-a*a);
                            if(check(a,b))
                                  ans++;
                      }
                      if(d!=(2*R)/d)
                      {
                            for(long long a=1;a<=(long long)sqrt(d/2);a++)
                            {
                                  double b=sqrt(d-a*a);
                                  if(check(a,b))
                                        ans++;
                            }
                      }
                }
          }    
          printf("%lld
    ",ans*4+4); 
    
          return 0;
    }
    View Code
  • 相关阅读:
    13-计算属性和侦听器
    12-指令系统介绍
    11-vue的使用
    10-vue的介绍
    09-babel
    08-webpack的介绍
    07-nodejs中npm的使用
    06-Nodejs介绍
    05-面向对象
    Docker结合Jenkins构建持续集成环境
  • 原文地址:https://www.cnblogs.com/mountaink/p/9976039.html
Copyright © 2011-2022 走看看