zoukankan      html  css  js  c++  java
  • luoguP2303 [SDOI2012]Longge的问题 化式子

    (sum limits_{i = 1}^n gcd(i, n))


    (sum limits_{i = 1}^n gcd(i, n))

    (=sum limits_{i = 1}^n sumlimits_{d|i;and;d|n} varphi(d))

    (=sum limits_{d |n} varphi(d) * frac{n}{d})

    然后就可以以一个很低的复杂度过了

    反正复杂度是不会超过(O(sqrt n * d(n)))


    #include <bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    
    ll n, ans;
    
    inline ll phi(ll m) {
        ll ret = m;
        for(ll t = 2; t * t <= m; t ++)
        if(m % t == 0) {
            while(m % t == 0) m /= t;
            ret /= t; ret *= (t - 1);
        }
        if(m > 1) ret /= m, ret *= (m - 1);
        return ret;
    }
    
    int main() {
        cin >> n;
        for(ll i = 1; i * i <= n; i ++) 
        if(n % i == 0) {
            ans += phi(i) * (n / i);
            if(n / i != i) ans += phi(n / i) * i;
        }
        printf("%lld
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    [HDOJ3567]Eight II
    [HDOJ3622]Bomb Game
    HTML 5 音频
    下拉菜单
    固定导航及右侧固定广告
    隔行换色
    返回顶部
    HTML 5 视频
    TAB切换
    自我介绍
  • 原文地址:https://www.cnblogs.com/reverymoon/p/10138607.html
Copyright © 2011-2022 走看看