• GCD HDU


    输入 N 和 M (2<=N<=1000000000, 1<=M<=N), 
    找出所有满足1<=X<=N 且 gcd(X,N)>=M 的 X 的数量.

    Input第一行输入样例数T (T <= 100)
    每个样例输入两个整数N , M。 (2<=N<=1000000000, 1<=M<=N)Output对于每组样例,输出一个整数,表示满足条件的X的数量。Sample Input

    3
    1 1
    10 2
    10000 72

    Sample Output

    1
    6
    260

    解析:
      借鉴uva 11426的思想 但范围太大 用时间换空间 直接求欧拉 再剪枝一下 就好了
    #include <iostream>
    #include <cstdio>
    #include <sstream>
    #include <cstring>
    #include <map>
    #include <cctype>
    #include <set>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    #include <bitset>
    #define rap(i, a, n) for(int i=a; i<=n; i++)
    #define rep(i, a, n) for(int i=a; i<n; i++)
    #define lap(i, a, n) for(int i=n; i>=a; i--)
    #define lep(i, a, n) for(int i=n; i>a; i--)
    #define rd(a) scanf("%d", &a)
    #define rlld(a) scanf("%lld", &a)
    #define rc(a) scanf("%c", &a)
    #define rs(a) scanf("%s", a)
    #define rb(a) scanf("%lf", &a)
    #define rf(a) scanf("%f", &a)
    #define pd(a) printf("%d
    ", a)
    #define plld(a) printf("%lld
    ", a)
    #define pc(a) printf("%c
    ", a)
    #define ps(a) printf("%s
    ", a)
    #define MOD 2018
    #define LL long long
    #define ULL unsigned long long
    #define Pair pair<int, int>
    #define mem(a, b) memset(a, b, sizeof(a))
    #define _  ios_base::sync_with_stdio(0),cin.tie(0)
    //freopen("1.txt", "r", stdin);
    using namespace std;
    const int maxn = 10010, INF = 0x7fffffff;
    int g, m;
    int ans;
    int getphi(int n)
    {
        int ret = n;
        for(int i = 2; i <= sqrt(n + 0.5); i++)
        {
            if(n % i == 0)
            {
                ret = ret / i * (i - 1);
                while(n % i == 0) n /= i;
            }
        }
        if(n > 1)
            ret = ret / n * (n - 1);
        return ret;
    }
    
    
    int main()
    {
        int T;
        rd(T);
        while(T--)
        {
            int sum = 0;
            rd(g), rd(m);
            int s = sqrt(g + 0.5);
            for(int i = 2; i <= s; i++)
                if(g % i == 0)
                {
                    if(i >= m) sum += getphi(g / i);
                    if(g / i >= m) sum += getphi(i);
                }
            if(g != 1 && s * s == g && s >= m) sum -= getphi(s);
            pd(sum + 1);
        }
    
        return 0;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    C++重载运算符
    std::vector
    new、delete、动态数组初始化、野指针、解引用、内存池、重载new和delete、内存泄漏等,释放崩溃
    C++匿名函数lambda
    缺少wntdll.pdb
    map、multimap和unordered_map(hash_map)以及unorderd_multimap
    分享一个双击后编辑并AJAX提交保存的脚本
    jquery.cookie.js操作cookie
    MVC获得某个View 或者 PartialView 生成的字符串
    c#中using 和new
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/10280464.html
Copyright © 2020-2023  润新知