zoukankan      html  css  js  c++  java
  • hdu 2588(简单的欧拉

      题意:给你一个n,m问你1-n里面(x)有多少对gcd(x, n)>=m。

      思路:我们可以设n=a*b, x=a*c,此时我们可以知道b,c是互质的,那么就可以用欧拉来求解

    /*  gyt
           Live up to every day            */
    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<stack>
    #include<cstring>
    #include<queue>
    #include<set>
    #include<string>
    #include<map>
    #include <time.h>
    #define PI acos(-1)
    using namespace std;
    typedef long long ll;
    typedef double db;
    const int maxn = 1e6+10;
    const ll maxm = 1e7;
    const ll mod = 1e9 + 7;
    const int INF = 0x3f3f3f;
    const ll inf = 1e15 + 5;
    const db eps = 1e-9;
    const int kind=26;
    
    ll euler(ll n){
         ll res=n,a=n;
         for(ll i=2;i*i<=a;i++){
             if(a%i==0){
                 res=res/i*(i-1);
                 while(a%i==0) a/=i;
             }
         }
         if(a>1) res=res/a*(a-1);
         return res;
    }
    void solve() {
        ll n, m;  scanf("%lld%lld", &n, &m);
        ll ans=0;
        for (ll i=1; i*i<=n; i++) {
            if (n%i==0) {
                if (i>=m)  ans+=euler(n/i);
                if (n/i>=m&&i*i!=n)  ans+=euler(i);
            }
        }
        cout<<ans<<endl;
    }
    int main() {
        int t = 1;
       // freopen("in.txt", "r", stdin);
        //freopen("out.txt", "w", stdout);
        scanf("%d", &t);
        while(t--)
            solve();
        return 0;
    }
  • 相关阅读:
    Python 面向对象(初级篇)
    python中的运算符
    初识Python
    浅谈计算机
    Zeppelin interperter 模式设置总结图解2
    maven 使用错误
    TensorFlow anaconda命令备忘
    zeppelin ERROR总结
    YARN 命令总结
    Zeppelin interperter 模式设置总结图解1
  • 原文地址:https://www.cnblogs.com/gggyt/p/7395593.html
Copyright © 2011-2022 走看看