欧拉函数
ITKaven
ACMER
本科软件工程专业
硕士计算机技术专业
专注于WEB开发的烟酒僧
展开
-
UVA 11426:GCD - Extreme (II)
问题主要在于,怎样快速求得区间[1,n-1] 中每个数和n的gcd的和 我们设 gcd(n,a)=i (a < n) ,则有 gcd(n/i,a/i)=1,显然 a/i < n/i,这样不就跟欧拉函数有关了吗 所以可以得到,区间[1,n-1]中有phi[n/i]个数和n的gcd为i (phi[]为欧拉函数) 再利用和素数筛相似的方法,就可以得到答案 #include<cs...原创 2018-07-18 11:37:38 · 1142 阅读 · 0 评论 -
Codeforces 1009D:Relatively Prime Graph
点虽然最多会有100000个点,但是边最多也只有100000条,所以我用欧拉函数的前缀和求得,最多不超过600个点,就可以有超过100000条边的情况,这样从边突破,时间复杂度就满足了。 我们可以利用欧拉函数,得到n个点,最多可能有多少条边,即 区间 [2,n] 的phi[i]的和(phi[]为欧拉函数数组) 所以当 m小于 n-1(即n个点都连接不了) 或者 大于最多条边,就不可能存在m条边...原创 2018-07-18 14:21:01 · 3407 阅读 · 0 评论 -
BZOJ 2005: [Noi2010]能量采集
参考博客:[BZOJ2005][NOI2010]能量采集(莫比乌斯反演) #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int maxn=100000+100; ll phi[maxn]; int prime[maxn],tot; bool i...原创 2018-07-28 10:45:13 · 916 阅读 · 0 评论 -
计蒜客 简单的快速幂
题目传送门 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1000000+100; const int prinum=100000+100; int prime[prinum],tot; bool isprime[prinum]; char B[maxn];...原创 2018-08-29 10:31:19 · 3926 阅读 · 3 评论