zoukankan      html  css  js  c++  java
  • BZOJ 2820: YY的GCD( 莫比乌斯反演 )

    求 ∑ gcd(x, y) = p ( p 是质数, 1 <= x <= n, 1 <= m <= m) 

    这个编辑器写不了数学公式...推推就可以了...然后就是分块

    复杂度...素数个数大概是n/logn, 一个数找倍数的均摊复杂度O(logn)(Orz Cyan), 所以就是O(n)预处理, 询问O(sqrt(n))

    ------------------------------------------------------------------

    #include<bits/stdc++.h>
     
    using namespace std; 
     
    typedef long long ll;
     
    const int maxn = 10000009;
     
    bool check[maxn];
    int prime[maxn], N = 0, mu[maxn], f[maxn];
     
    void init() {
    memset(check, false, sizeof check);
    memset(f, 0, sizeof f);
    mu[1] = 1;
    for(int i = 2; i < maxn; i++) {
    if(!check[i]) {
    prime[N++] = i;
    mu[i] = -1;
    }
    for(int j = 0; j < N && prime[j] * i < maxn; j++) {
    check[i * prime[j]] = true;
    if(i % prime[j]) 
       mu[i * prime[j]] = -mu[i];
    else {
    mu[i * prime[j]] = 0;
    break;
    }
    }
    }
    for(int i = 0; i < N; i++)
       for(int j = 0; j * prime[i] < maxn; j++)
           f[j * prime[i]] += mu[j];
    for(int i = 1; i < maxn; i++)
       f[i] += f[i - 1];
    }
     
    int main() {
    init();
    int t;
    scanf("%d", &t);
    while(t--) {
    int n, m;
    ll ans = 0;
    scanf("%d%d", &n, &m);
    if(n > m) swap(n, m);
    for(int L = 1; L <= n; L++) {
    int R = min(n / (n / L), m / (m / L));
    ans += 1LL * (f[R] - f[L - 1]) * (n / L) * (m / L);
    L = R;
    }
    printf("%lld ", ans);
    }
    return 0;
    }

    ------------------------------------------------------------------ 

    2820: YY的GCD

    Time Limit: 10 Sec  Memory Limit: 512 MB
    Submit: 989  Solved: 497
    [Submit][Status][Discuss]

    Description

    神犇YY虐完数论后给傻×kAc出了一题
    给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对
    kAc这种傻×必然不会了,于是向你来请教……
    多组输入

    Input

    第一行一个整数T 表述数据组数
    接下来T行,每行两个正整数,表示N, M

    Output

    T行,每行一个整数表示第i组数据的结果

    Sample Input

    2
    10 10
    100 100

    Sample Output

    30
    2791

    HINT

    T = 10000

    N, M <= 10000000

    Source

  • 相关阅读:
    1592:【例 1】国王
    状态压缩类动态规划笔记
    1300:鸡蛋的硬度
    1263:【例9.7】友好城市
    第四部分-并发编程案例分析4:高性能数据库连接池HikariCP
    容器基础3:容器镜像
    第四部分-并发编程案例分析3:高性能队列Disruptor
    容器基础2:隔离与限制
    第四部分-并发编程案例分析1:限流Guava RateLimiter
    容器基础1:进程
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4690673.html
Copyright © 2011-2022 走看看