SIEVE 线性筛】的更多相关文章

今天来玩玩筛 英文:Sieve 有什么筛? 这里介绍:素数筛,欧拉筛,约数个数筛,约数和筛 为什么要用筛? 顾名思义,筛就是要漏掉没用的,留下有用的.最终筛出来1~n的数的一些信息. 为什么要用线性筛? 考虑最基础的线性筛素数,是O(n)的. 而一般的做法是: 1.对于每个m暴力枚举1~sqrt(m)看能否被整除.O(nsqrt(n)) 2.对于每个找到的素数,用它去将所有它的倍数的数都干掉.O(nlogn) 但是,即使是第二种,也有一个log 这是因为一个合数会被它的所有质因子筛一次.要重复质…
2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1194  Solved: 455[Submit][Status][Discuss] Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sample Output 122 HINT T <= 10000 N, M<=1000000…
2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 1<=N<=10^7 uva上做过gcd(x,y)=1的题 gcd(x,y)=p ---> gcd(x/p,y/p)=1 每个质数做一遍行了 答案是欧拉函数的前缀和*2…
题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D} f(d)\mu(\frac{D}{d}) \frac{n}{D} \frac{m}{D} \] 这次函数是\(g = (f*\mu )\),\(f\)显然不是积性函数,但我们照样可以用线性筛 具体做法我晚上回家再补吧草稿纸忘带了... 补: \(g(p^a)=p-(p-1)\) 因为卷了\(\…
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6). 问你有多少种长度为y,乘积为x的整数数列.(可以有负数) 题解: 首先考虑数列只有正整数的情况. 将x分解质因数:x = ∑ a[i]*p[i] 由于x较大,所以要先用线性筛求出素数,再枚举素数分解质因数. 那么一个乘积为x的数列可以看做,将x的所有∑ p[i]个质因子,分配到了y个位置上. 设f(i)…
另一道数据范围不一样的题:https://www.cnblogs.com/Yinku/p/10987912.html $F(n)=\sum\limits_{i=1}^{n} lcm(i,n) $ $\sum\limits_{i=1}^{n} \frac{in}{gcd(i,n)} $ 枚举g,提n. $n \sum\limits_{g|n}\frac{1}{g} \sum\limits_{i=1}^{n} i [gcd(i,n)==g] $ 前面带有id的时候,除以g要提g到前面. $n \su…
题面 传送门 分析 1.暴力做法 首先先把每个数除以gcd(a1,a2-,an)gcd(a_1,a_2 \dots,a_n )gcd(a1​,a2​-,an​) 可以O(namax)O(n\sqrt {a_{max}})O(namax​​)的时间内分解出所有数的质因数,然后统计出现次数最多的质因数,设最多出现次数为xxx,然后把其他的数去掉就可以了,答案为n−xn-xn−x 例: n=4,a={6,9,15,30}n=4,a=\{6,9,15,30\}n=4,a={6,9,15,30} 处理后a…
最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线性筛筛常见积性函数及其代码:https://blog.masterliu.net/algorithm/sieve/ 积性函数与线性筛(包括普通线性函数):https://blog.csdn.net/weixin_42562050/article/details/87997582 bzoj2154/b…
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和仍是积性函数,所以f也是积性函数,可以O(n)线性筛求得.总时间复杂度为 具体筛法看代码. 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define mod…
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 726  Solved: 309[Submit][Status][Discuss] Description 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci×cj 的价值. 一个数字只能参与一次配对,可以不参与配对. 在…