zoukankan      html  css  js  c++  java
  • #欧拉函数#洛谷 2303 [SDOI2012] Longge 的问题

    题目

    (sum_{i=1}^ngcd(n,i))


    分析

    (=sum_{i=1}^nsum_{d|gcd(n,i)}varphi(d))
    (=sum_{d|n}varphi(d)sum_{i=1}^{frac{n}{d}}1=sum_{d|n}varphi(d)frac{n}{d})
    这显然可以(O(sqrt{n}log n))实现


    代码

    #include <cstdio>
    #include <cctype>
    #include <map>
    #define rr register
    using namespace std;
    typedef long long lll; map<lll,bool>uk;
    lll n,nn,ans,Cnt,prime[31];
    inline void dfs(lll rest,lll now,lll phi){
    	if (uk[now]) return;
    	ans+=phi*rest,uk[now]=1;
    	if (now==n) return;
    	for (rr int i=1;i<=Cnt;++i)
    	if (rest%prime[i]==0){
    		if (now%prime[i]==0) dfs(rest/prime[i],now*prime[i],phi*prime[i]);
    		    else dfs(rest/prime[i],now*prime[i],phi*(prime[i]-1));
    	}
    }
    signed main(){
    	scanf("%lld",&n),nn=n;
    	for (rr lll i=2;i*i<=nn;++i)
    	if (nn%i==0){
    		while (nn%i==0) nn/=i;
    		prime[++Cnt]=i; 
    	}
    	if (nn>1) prime[++Cnt]=nn;
    	dfs(n,1,1);
    	return !printf("%lld",ans);
    }
    
  • 相关阅读:
    js中BOM和DOM的区别
    正则表达式
    第一个网页
    RegExp
    pseudoclasses&伪元素
    自我介绍
    DOM document 对象
    神经网络学习小节
    果然是神经网络
    果然是实践出真知啊
  • 原文地址:https://www.cnblogs.com/Spare-No-Effort/p/14029297.html
Copyright © 2011-2022 走看看