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

POJ 3904 Sky Code 莫比乌斯反演入门

时间:2020-06-30 20:43:31      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:col   poj   height   png   size   div   while   amp   for   

技术图片

 

 技术图片

 

 

int prime[maxn], prime_tot;
int    is_prime[maxn];
int mu[maxn];

void pre_calc(int lim) {
    mu[1] = 1;
    for (int i = 2; i <= lim; i++) {
        if (!is_prime[i]) {
            prime[++prime_tot] = i;
            mu[i] = -1;
        }
        for (int j = 1; j <= prime_tot; j++) {
            if (i * prime[j] > lim) break;
            is_prime[i * prime[j]] = 1;
            if (i % prime[j] == 0) {
                mu[i * prime[j]] = 0;
                break;
            }
            else mu[i * prime[j]] = -mu[i];
        }
    }
}

ll r[maxn];

ll get_C(ll x) {
    return (x - 3) * (x - 2) * (x - 1) * x / 24;
}

int main() {
    int n;
    pre_calc(10005);
    while (~scanf("%d",&n)) {
        ll ans = 0;
        memset(r, 0, sizeof r);
        for (int i = 0; i < n; i++) {
            ll tmp;
            int j;
            scanf("%lld", &tmp);
            for (j = 1; j * j < tmp; j++) {
                if (tmp % j == 0) r[j]++, r[tmp / j]++;
            }
            if (j * j == tmp) r[j]++;
        }
        for (int i = 1; i <= 10000; i++) {
            if(r[i]>=4)
            ans += mu[i] * get_C(r[i]);
        }
        printf("%lld\n", ans);
    }
}

 

POJ 3904 Sky Code 莫比乌斯反演入门

标签:col   poj   height   png   size   div   while   amp   for   

原文地址:https://www.cnblogs.com/hznumqf/p/13215528.html

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