2017年安徽省ACM竞赛J题《看似简单的题目》C++题解----奇数项欧拉函数(带模)的和
今晚花了一晚上终于A掉了这道题?,哈哈???,好快乐呀,做难题果然能让人很快乐???当年省赛时没做出来,今晚终于搞定了,必须得总结下~~~ AC代码在文末给出~?
一、解题思路
首先大家在看这道题前得掌握欧拉定理,欧拉函数phi(n)表示n以内的数中与n互质的数的个数。欧拉函数的通式是ϕ(n)=n∗∑i=1π(n)(1−1pi)\phi(n)=n*\sum_{i=1}^{\pi(n)}(1-\frac{1}{p_i})ϕ(n)=n∗i=1∑π(n)(1−pi1),由于ϕ(n)\phi(n)ϕ(n)是积性函数,当x,y互质时,x,y满足ϕ(x∗y)=ϕ(x)∗ϕ(y)x,y互质时,x,y满足\phi(x*y)=\phi(x)*\phi(y)x,y互质时,x,y满足ϕ(x∗y)=ϕ(x)∗ϕ(y),
又因为n可以通过质因子分解写成n=∏pikin=\prod{p_i^{k_i}}n=∏piki,则有ϕ(n)=ϕ(∏piki)=∏ϕ(piki)\phi(n)=\phi(\prod{p_i^{k_i}})=\prod{\phi({p_i^{k_i}})}ϕ(n)=ϕ(∏piki)=∏ϕ(piki)
又有:
ϕ(ak)=ak−ak−1=ak−1∗(a−1)\phi(a^k)=a^k-a^{k-1}=a^{k-1}*(a-1)ϕ(ak)=ak−ak−1=ak−1∗(a−1)
下面就可以正式推导题目中的f(n)f(n)f(n)了
题目中的f(n)f(n)f(n)定义:
f(n)=(∑i=1nϕ(ni))%(n+1)f(n)=(\sum_{i=1}^{n}\phi(n^i))\%(n+1)f(n)=(i=1∑nϕ(ni))%(n+1)
f(n)=[ϕ(n)+ϕ(n2)+...+ϕ(nn)]%(n+1)f(n)=[\phi(n)+\phi(n^2)+...+\phi(n^n)]\%(n+1)f(n)=[ϕ(n)+ϕ(n2)+...+ϕ(nn)]%(n+1)
f(n)=[ϕ(∏piki)+ϕ((∏piki)2)+...+ϕ((∏piki)n)]%(n+1)f(n)=[\phi(\prod{p_i^{k_i}})+\phi(({\prod{p_i^{k_i}}})^2)+...+\phi(({\prod{p_i^{k_i}}})^n)]\%(n+1)f(n)=[ϕ(∏piki<