![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
欧拉函数
zhhx2001
这个作者很懒,什么都没留下…
展开
-
hdu2588(欧拉函数)
给定N,M(2=M的个数。 首先,gcd(x,n)一定是n的约数,且gcd>m那么就枚举n大于m的约数算就行,就是phi【n/d】, 注意,不能直接phi【n/m】因为m不一定是n的约数!!!!!! #include #include #include #include #include #include using namespace std; typedef long long ll原创 2016-08-24 08:53:58 · 353 阅读 · 0 评论 -
hdu3501(欧拉函数水)
/* 题目大意: * 求1~n里面比n小,但是与n不互素的数的总和。 *解题思路: * 利用欧拉函数即可求解,1~n比n小且与n互素的数的总和为 * sum(n) = n * phi(n) / 2;那么可以先求出1~n-1的总和(等差数列求和),然后 * 减去sum(n)即可。 */ #include #include #原创 2016-08-24 08:16:53 · 335 阅读 · 0 评论 -
hdu1787(欧拉函数)
其实这个就是求单个数的欧拉函数模版 int work(int n) { int ans=n,sq=(int)sqrt(n);//!!!必须预处理 for (int i=2;i<=sq;i++) if (n%i==0) { ans=ans/i*(i-1); while (n%i==0) n=n/i; } if (n>1) ans=ans/n*(n-1);//必须原创 2016-08-24 07:56:45 · 306 阅读 · 0 评论 -
sdoi2008(欧拉函数)
考察了欧拉函数在数学上的特点 顺便练了一下代码 #include #include #include #include using namespace std; int phi[100009],n; void getphi() { phi[1]=1; for (int i=2;i<n;i++) if (!phi[i]) { for(int j=i;j<n;j+=i)原创 2016-06-24 11:25:59 · 295 阅读 · 0 评论 -
bzoj2186(欧拉函数+逆元)
首先,n!是m!的倍数,那么小于n!与m!互素的数的个数就是phi【m!】*n!/m!//这里需要用到逆元 首先我们想到,m!=1*2*3.......*m-1*m。实际上phi 【m!】就是从这些因子中转移出来,注意这些因子包括了所有相乘的出m!的质数,也就是说,把所有 phi【i】(i 明天再更新 不写逆元会TLE,并且,题目中已经说了,mod为质数,方便判断逆元都是可行的原创 2016-08-23 23:48:08 · 959 阅读 · 0 评论 -
bzoj2705(欧拉函数)
给定一个整数N,你需要求出∑gcd(i, N)(1 0 数据太大,phi函数无法预处理,所以要直接算,这里是要枚举他的因数,以该因数为gcd的数量来算,典型题 #include #include #include #include #include using namespace std; typedef long long ll; ll n; ll phi(ll n) { ll原创 2016-08-24 10:53:25 · 258 阅读 · 0 评论 -
bzoj1408(欧拉函数)
主要是求奇数个素因子和偶数个素因子这phi值之和感觉不好做。。 #include #include #include #include #include using namespace std; inline int read() { int ans,f=1;char ch; while ((ch=getchar())'9') if (ch=='-') f=-1;ans=ch-'0'原创 2016-08-24 09:55:50 · 414 阅读 · 0 评论