
欧拉函数
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#includeusing namespace std;typedef long long ll原创 2016-08-24 08:53:58 · 379 阅读 · 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 · 363 阅读 · 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 · 328 阅读 · 0 评论 -
sdoi2008(欧拉函数)
考察了欧拉函数在数学上的特点顺便练了一下代码#include#include#include#includeusing 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 · 319 阅读 · 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 · 990 阅读 · 0 评论 -
bzoj2705(欧拉函数)
给定一个整数N,你需要求出∑gcd(i, N)(10数据太大,phi函数无法预处理,所以要直接算,这里是要枚举他的因数,以该因数为gcd的数量来算,典型题#include#include#include#include#includeusing namespace std;typedef long long ll;ll n;ll phi(ll n){ ll原创 2016-08-24 10:53:25 · 278 阅读 · 0 评论 -
bzoj1408(欧拉函数)
主要是求奇数个素因子和偶数个素因子这phi值之和感觉不好做。。#include#include#include#include#includeusing 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 · 436 阅读 · 0 评论