zoukankan      html  css  js  c++  java
  • POI2007 ZAP-Queries

    POI2007 ZAP-Queries

    题意

    yy的gcd 基本一样。

    解法

    同上

    代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #define INF 2139062143
    #define MAX 0x7ffffffffffffff
    #define del(a,b) memset(a,b,sizeof(a))
    #define Rint register int
    using namespace std;
    typedef long long ll;
    template<typename T>
    inline void read(T&x)
    {
        x=0;T k=1;char c=getchar();
        while(!isdigit(c)){if(c=='-')k=-1;c=getchar();}
        while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=k;
    }
    const int maxn=50000+5;
    int mo[maxn];
    bool nop[maxn];
    int p[maxn];
    int sum[maxn];
    void get_mo(int n){
        mo[1]=1;
        nop[1]=1;
        for(int i=2;i<=n;i++){
            if(!nop[i]) {
                p[++p[0]]=i;
                mo[i]=-1;
            }
            for(int j=1;j<=p[0]&&i*p[j]<=n;j++){
                nop[i*p[j]]=1;
                if(i%p[j]==0) break;
                mo[i*p[j]]=-mo[i];
            }
        }
        for(int i=1;i<=n;i++) sum[i]=sum[i-1]+mo[i]; 
    }
    
    int main()
    {
        get_mo(50000);
        int t;
        read(t);
        while(t--){
            ll a,b,d,limit;
            ll ans=0;
            read(a),read(b),read(d);
            limit=min(a/d,b/d);
            for(int l=1,r;l<=limit;l=r+1){
                r=min( a/(a/l) , b/(b/l) );
                ans += (a/(l*d)) * (b/(l*d)) * (sum[r]-sum[l-1]);
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    rabbitmqctl常用命令-3
    Count and Say
    Spiral Matrix II
    Minimum Path Sum
    Plus One
    Rotate Image
    Permutations
    Search a 2D Matrix
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
  • 原文地址:https://www.cnblogs.com/mrasd/p/9509330.html
Copyright © 2011-2022 走看看