欧拉函数
BrooksBUAA
这个作者很懒,什么都没留下…
展开
-
[BZOJ 2186][Sdoi2008]沙拉公主的困惑:欧拉函数
点击这里查看原题首先可以得到结果为phi(m!) * (n!/m!)%r,那么难点在于phi(m!)如何求。 因为phi(m!)=m! * (p-1)/p,p为小于m!的质数,所以可以用一个数组ans[i]表示phi(m!)/m!的结果,ans[i]=ans[i-1],如果i为质数,那么ans[i]=ans[i] * (i-1) * inv[i]%r。另附上递推逆元的证明(以前只会写不会证) By原创 2017-05-31 10:00:48 · 296 阅读 · 0 评论 -
[BZOJ 2705][SDOI2012]Longge的问题:欧拉函数
点击这里查看原题求sigma(gcd(i,n)),枚举n的约数k,s(k)表示满足gcd(i,n)=k(1<=i<=n)的i的个数,所以答案为sigma(k*s(k)),求s(k)即为求gcd(i/k,n/k),即为phi(n/k)。/* User:Small Language:C++ Problem No.:2705 */ #include<bits/stdc++.h> #define ll lo原创 2017-05-31 10:40:27 · 376 阅读 · 0 评论 -
[BZOJ 2190][SDOI2008]仪仗队:欧拉函数
点击这里查看原题显然,对于每个(x,y)(x,y均不为1),(x,y)能被看到的条件是gcd(x-1,y-1)=1,因此我们需要求gcd(x-1,y-1)=1的对数,由于第一排、第一列分别有一个可以看到的,因此答案还需要加2。对每一排,x<=y中,满足条件的x的个数等于phi(y);对每一列同理(但是(2,2)被算了两次),因此答案=2*sigma(phi(i))-1+2(1<=i<=n)/* Us原创 2017-05-31 11:09:35 · 476 阅读 · 0 评论