• [HAOI2011]Problem b


     出处:http://www.cnblogs.com/peng-ym/p/8673239.html

    #include<bits/stdc++.h>
    #define LL long long
    #define ULL unsigned long long
    #define rep(i,j,k) for(int i=j;i<=k;i++)
    #define dep(i,j,k) for(int i=k;i>=j;i--)
    #define INF 0x3f3f3f3f
    #define mem(i,j) memset(i,j,sizeof(i))
    #define make(i,j) make_pair(i,j)
    #define pb push_back
    using namespace std;
    const int N=5e4+5;
    int sum[N],pre[N],mu[N],tot,k;
    bool vis[N];
    void init() {
        mu[1]=1;
        rep(i,2,N-5) {
            if(!vis[i]) { pre[++tot]=i; mu[i]=-1; }
            for(int j=1;j<=tot&&pre[j]*i<=N-5;j++) {
                vis[i*pre[j]]=1;
                if(i%pre[j]==0) break;
                mu[i*pre[j]]=-mu[i];
            }
        }
        rep(i,1,N-5) sum[i]=sum[i-1]+mu[i];
    }
    LL cal(int n,int m) {
        LL ans=0;
        int up=min(n/k,m/k);
        for(int l=1,r;l<=up;l=r+1) {
            r=min((n/k)/((n/k)/l),(m/k)/((m/k)/l));
            ans+=(1LL*n/(1LL*l*k))*(1LL*m/(1LL*l*k))*(sum[r]-sum[l-1]);
        }
        return ans;
    }
    int main() {
        init();
        int t,a,b,c,d;
        scanf("%d",&t);
        while(t--) {
            scanf("%d %d %d %d %d",&a,&b,&c,&d,&k);
            printf("%lld
    ",cal(b,d)-cal(b,c-1)-cal(a-1,d)+cal(a-1,c-1));
        }
        return 0;
    }
    View Code
    一步一步,永不停息
  • 相关阅读:
    帮忙看看怎么优化这个最长的sql
    12种不宜使用的Javascript语法
    走格子
    乘法逆元
    完美字符串
    全排列问题
    A. Sorting Railway Cars
    Prim
    矩阵取数
    套题T8&T9
  • 原文地址:https://www.cnblogs.com/Willems/p/10917639.html
Copyright © 2020-2023  润新知