线性素数筛
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
poj2262 Goldbach's Conjecture(线性素数筛+暴力枚举)
线性素数筛板子。原理就是保证每个合数一定是被自己最小的质因子筛掉的。核心就是:if(i%prime[j]==0) break;如果i有prime[j]这个质因子,则i=prime[j]*k, i*prime[j+1]=prime[j]*k *prime[j+1],完全可以在k *prime[j+1]时被筛掉。所以是O(n)O(n)的原创 2017-08-26 17:59:22 · 333 阅读 · 0 评论 -
bzoj2226 [Spoj 5971] LCMSum(欧拉函数)
∑i=1nlcm(i,n)\sum\limits_{i=1}^nlcm(i,n) =∑i=1ningcd(i,n)=\sum\limits_{i=1}^n\frac{in}{gcd(i,n)} =∑d|nf(n/d)∗d∗n/d=\sum\limits_{d|n}f(n/d)*d*n/d =∑d|nf(d)∗n=\sum\limits_{d|n}f(d)*n 其中f(n)表示1~n中与n互质原创 2018-04-07 15:01:25 · 184 阅读 · 0 评论 -
bzoj1025 [SCOI2009]游戏(数论+背包dp)
考虑每一个置换的排数其实就是所有循环节长度的lcm+1。考虑一个数x是否可能是排数,即是否可能表示为若干数的lcm,且和<=n。设x=pq11⋯pqkkx=p_1^{q_1}\cdots p_k^{q_k},则最小的和为pq11+pq22+⋯+pqkkp_1^{q_1}+p_2^{q_2}+\cdots +p_k^{q_k},如果<=n则合法,否则不合法。因此我们可以枚举每一个质因子,当做分组背包,原创 2018-03-29 23:00:48 · 272 阅读 · 0 评论 -
bzoj3629 [JLOI2014]聪明的燕姿(数论+dfs)
首先我们有约数和公式: 若x=∏i=1npqiix=\prod\limits_{i=1}^np_i^{q_i} 则x的约数和d(x)=∏i=1n∑j=0qipjid(x)=\prod\limits_{i=1}^n\sum\limits_{j=0}^{q_i}p_i^j 于是我们可以枚举质因子pi,爆搜答案。要注意优秀的剪枝技巧qaq原创 2018-03-17 18:12:31 · 372 阅读 · 0 评论 -
CF385C Bear and Prime Numbers(素数+暴力)
线性素数筛出1e7的质数,应该是6e5左右个,然后直接暴力预处理答案即可。复杂度大概在(n/ln n∗logn)(n/ln\ n*log n)左右原创 2018-03-11 15:32:03 · 1431 阅读 · 0 评论 -
bzoj2818 Gcd(欧拉函数前缀和)
求gcd(i,j)==pgcd(i,j)==p就是求gcd(i/p,j/p)==1gcd(i/p,j/p)==1。我们发现这就是欧拉函数前缀和。于是我们可以用素数筛处理出phi来做。注意是有序对的个数,所以每个p的贡献应该是sum[n/p]∗2−1sum[n/p]*2-1原创 2018-03-17 15:51:17 · 394 阅读 · 0 评论 -
Codeforces Round#470
CF948A Protect Sheep(模拟)没看到输出“Yes”卡了二十分钟【再见】CF923A Primal Sport(线性素数筛,数学)CF923B Producing Snow(树状数组+二分/平衡树)CF923C Perfect Security(贪心+Trie)CF923D Picking Strings(手玩题)原创 2018-03-11 12:35:18 · 390 阅读 · 0 评论 -
CF402D Upgrading Array(贪心+数学+线性素数筛)
先预处理出g[i]表示a[1]…a[i]的gcd,我们贪心的发现,肯定是从后往前做,这样不会影响前面。每次我们分解这个gcd,看他是负贡献还是正贡献,决定是不是要除掉它。这样的操作之后,我们分解每一个剩下的数,统计答案即可。用线性素数筛提前把素数筛出来,复杂度应该是小于O(n sqrt(1e9))的。原创 2017-10-15 15:23:21 · 389 阅读 · 0 评论 -
bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
求gcd(i,j)为质数的个数。即 ∑p∑i=1n∑j=1mgcd(i,j)==p\sum\limits_p\sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)==p 首先我们可以像bzoj2301一样把后一部分化简,得到(假定n< m) ∑p∑d=1⌊n/p⌋μ(d)⌊n/pd⌋⌊m/pd⌋\sum\limits_p\sum\limits_{d=1}^原创 2017-10-10 21:58:56 · 568 阅读 · 0 评论 -
CIA3 Sometimes Naive(莫比乌斯反演+积性函数前缀和)
题意:求∑x=1n∑y=1mφ(gcd(x,y))\sum\limits_{x=1}^n\sum\limits_{y=1}^m\varphi(gcd(x,y)) 根据各种老套路化简得 ∑i=1n⌊n/i⌋⌊m/i⌋∑d|iφ(i/d)∗μ(d)\sum\limits_{i=1}^n\lfloor n/i\rfloor \lfloor m/i\rfloor\sum\limits_{d|i}\varp原创 2017-10-18 21:23:54 · 870 阅读 · 0 评论 -
bzoj2186 [Sdoi2008]沙拉公主的困惑(数论)
求1~n!中与m!互质的数的个数。 最后结论就是n!∏pi−1pin!\prod \frac{p_i-1}{p_i} 有点像欧拉函数那样,我们线性筛预处理素数,阶乘,逆元即可。原创 2018-04-05 16:37:29 · 236 阅读 · 0 评论