码迷,mamicode.com
首页 > 其他好文 > 详细

P4450 双亲数

时间:2019-03-01 19:56:40      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:prim   sig   class   string   algo   cstring   ++   [1]   break   

思路

同zap-queries
莫比乌斯反演的板子
数据范围小到不用整除分块。。。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
int mu[1010000],isprime[1010000],iprime[1010000],cnt,n,m,d;
void prime(int n){
    isprime[1]=true;
    mu[1]=1;
    for(int i=2;i<=n;i++){
        if(!isprime[i]){
            iprime[++cnt]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=cnt&&iprime[j]*i<=n;j++){
            isprime[iprime[j]*i]=true;
            mu[iprime[j]*i]=-mu[i];
            if(i%iprime[j]==0){
                mu[iprime[j]*i]=0;
                break;
            }
        }
    }
}
signed main(){
    prime(1000100);
    scanf("%lld %lld %lld",&n,&m,&d);
    if(n<m)
        swap(n,m);
    int ans=0;
    for(int i=1;i<=n/d;i++){
        ans+=mu[i]*(m/(i*d))*(n/(i*d));
    }
    printf("%lld\n",ans);
    return 0;
}

P4450 双亲数

标签:prim   sig   class   string   algo   cstring   ++   [1]   break   

原文地址:https://www.cnblogs.com/dreagonm/p/10458420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!