【BZOJ】【2005】【NOI2010】能量采集
2015-04-03 17:43
323 查看
欧拉函数
玛雅,我应该先看看JZP的论文的……贾志鹏《线性筛法与积性函数》例题一这题的做法……仔细想下可以得到:$ans=2*\sum_{a=1}^n\sum_{b=1}^m gcd(a,b)-n*m$
那么重点就在于算$\sum_{a=1}^n\sum_{b=1}^m gcd(a,b)$这个东西
copy一下JZP的推导过程:
$$ \begin{aligned} \sum_{a=1}^n \sum_{b=1}^m gcd(a,b) &= \sum_{a=1}^n \sum_{b=1}^m \sum_{d|gcd(a,b)} \varphi(d) \\ &= \sum_{a=1}^n \sum_{b=1}^m \sum_{d|a and d|b} \varphi(d) \\ &= \sum \varphi(d) \sum_{1 \leq a \leq n \&\& d|a} \sum_{1 \leq b \leq m \&\& d|b} 1 \\ &= \sum \varphi(d) ( \sum_{1 \leq a \leq n \&\& d|a} 1) * ( \sum_{1 \leq b \leq m \&\& d|b} 1) \\ &= \sum \varphi(d) \left\lfloor \frac{n}{d} \right\rfloor \left\lfloor \frac{m}{d} \right\rfloor \end{aligned} $$
/************************************************************** Problem: 2005 User: Tunix Language: C++ Result: Accepted Time:40 ms Memory:2152 kb ****************************************************************/ //BZOJ 2005 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n;++i) #define F(i,j,n) for(int i=j;i<=n;++i) #define D(i,j,n) for(int i=j;i>=n;--i) using namespace std; typedef long long LL; inline int getint(){ int r=1,v=0; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch=='-')r=-1; for(; isdigit(ch);ch=getchar()) v=v*10+ch-'0'; return r*v; } const int N=1e5+10,INF=~0u>>2; /*****************template**********************/ int phi ,prime ,tot,n,m; bool check ; void getphi(int n){ memset(check,0,sizeof check); phi[1]=1; int tot=0; F(i,2,n){ if(!check[i]){ prime[++tot]=i; phi[i]=i-1; } F(j,1,tot){ if(i*prime[j]>n) break; check[i*prime[j]]=1; if(i%prime[j]==0){ phi[i*prime[j]]=phi[i]*prime[j]; break; } else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } } int main(){ n=getint(); m=getint(); if (n>m) swap(n,m); getphi(N-1); LL ans=0; F(i,1,n) ans+=(LL)phi[i]*(n/i)*(m/i); printf("%lld\n",ans*2-(LL)n*m); return 0; }
View Code
相关文章推荐
- bzoj 2005: [Noi2010]能量采集
- 【bzoj2005】 [Noi2010]能量采集 数学结论(gcd)
- bzoj 2005: [Noi2010]能量采集【莫比乌斯反演】
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- bzoj 2005: [Noi2010]能量采集 筛法||欧拉||莫比乌斯
- [bzoj2005][Noi2010]能量采集
- bzoj 2005: [Noi2010]能量采集
- BZOJ 2005 [Noi2010]能量采集 ——Dirichlet积
- bzoj2005: [Noi2010]能量采集 莫比乌斯反演
- 【BZOJ2005】[Noi2010]能量采集 欧拉函数
- bzoj2005 [Noi2010]能量采集
- BZOJ 2005 [Noi2010]能量采集
- BZOJ 2005 2005: [Noi2010]能量采集 | 容斥原理
- bzoj 2005 [Noi2010]能量采集 O(n)莫比乌斯反演
- BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
- BZOJ系列2005《[Noi2010]能量采集》题解
- [BZOJ2005][Noi2010]能量采集 容斥+数论
- 【bzoj2005】[Noi2010]能量采集
- [NOI2010][bzoj2005] 能量采集 [欧拉函数+分块前缀和优化]
- BZOJ 2005 NOI2010 能量采集 莫比乌斯反演