zoukankan      html  css  js  c++  java
  • [BZOJ1041][HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4319  Solved: 1955 [Submit][Status][Discuss]

    Description

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

    Input

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

    Output

    整点个数

    Sample Input

    4

    Sample Output

    4

    HINT

     科普视频

    太神了,看这个

    #include <cmath>
    #include <iostream>
    using namespace std;
    typedef long long ll;
    ll Gcd(ll x, ll y){
        ll t;
        if(x > y){
            t = x;
            x = y;
            y = t;
        }
        while(x){
            t = x;
            x = y % x;
            y = t;
        }
        return y;
    }
    inline bool Judge(ll a, ll b){
        double t = sqrt(b);
        if(t != floor(t)) return false;
        if(Gcd(a, b) == 1 && a != b) return true;
        return false;
    }
    int main(){
        ll r, ans = 0;
        cin >> r;
        for(ll d = 1; d * d <= r * 2; d++)
            if(2 * r % d == 0){
                for(ll i = 1; i * i * d <= r; i++)
                    if(Judge(i * i, 2 * r / d - i * i)) ans++;
                if(d * d != 2 * r)
                    for(ll i = 1; i * i * 2 <= d; i++)
                        if(Judge(i * i, d - i * i)) ans++;    
            }
        cout << (ans + 1) * 4 << endl;
        return 0;
    }
  • 相关阅读:
    centos vsftpd
    centos nginx
    linux 修改配色
    面试题讲解
    文件操作
    Python
    Python-linux作业
    python(12.17)笔记
    python周末作业(12.14--16)
    python作业(12.12)
  • 原文地址:https://www.cnblogs.com/ruoruoruo/p/7449862.html
Copyright © 2011-2022 走看看