内存限制: 128.0MB 时间限制: 1s 测试数据: 10 * 10pts
题目描述 Description
你在某日收到了 FFF 团卧底的求助,他的妹子向他询问了一道算式,而他并不会做,于是这个问题就交给你了:
其中$f(i)$为小于等于$i$且与$i$互素的元素的个数。
输入描述 Input Description
第一行为 $n$
输出描述 Output Description
一行,为运算后的答案
样例输入 Sample Input
6
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
样例解释: $(1+1)+(1+2+3+2+1+6) mod 6=2+3=5$
数据范围:对于100%的数据 $n<=10^{14}$
Solution
对于每个sigma,逐个击破
第一个sigma,我猜共产党(n+i,n*i)都等于1,跑了个程序测了一下发现就是这么回事,然后就解决了。
第二个sigma比较坑爹,有一个叫做Pillai函数的东西。
设函数g(n) = gcd(i,n) (1<=i<=n),对于任意给定的i 。 g(1) = 1 ,g(n)=g(m1)g(m2) (n=m1m2 且 (m1, m2)= 1),由积性函数定义,g是积性函数。由具体数学上的结论,积性函数的和也是积性的。所以f(n) = ∑gcd(i, n)也是积性函数。n>1时n可以被唯一分解 n=p1^a1p2^a2…ps^as,由于f(n)是积所以f(n) = f(p1^a1)f(p2^a2)*…f(pr^ar)。所以只要求f(pi^ai)就好,如果d是n的一个约数,那么1<=i<=n中gcd(i,n) = d的个数是phi(n/d),即n/d的欧拉函数
1 | f(pi^ai) = Φ(pi^ai)+pi*Φ(pi^(ai-1))+pi^2*Φ(pi^(ai-2))+...+pi^(ai-1)* Φ(pi)+ pi^ai *Φ(1) |
接下来把各个项乘起来OK
第三个乱搞即可。。
AC
1 |
|