目录 "目录地址" "上一篇" "下一篇" 线性求逆元题型 对于已知模数 $m$ ,求出在模 $m$ 意义下, $1$~$(m 1)$ 的逆元 $m$ 较大,只支持 $O(m)$ 复杂度的算法 线性算法 $O(n)$ 由递推的方法 $O(n)$ 考虑模 $m$ 意义下 $1^{ 1}\equiv 1 ...
分类:
其他好文 时间:
2020-03-03 10:42:08
阅读次数:
86
埃氏筛法 先将2到n范围内的整数列出来,其中2是最小的素数。 将表中所有的2的倍数划去,表中剩下的最小的数字就是3,他不能被更小的数整除,所以3是素数。 再将表中所有的3的倍数划去……以此类推; 如果表中剩余的最小的数是m,那么m就是素数。 然后将表中所有m的倍数划去,像这样反复操作,就能依次枚举n ...
分类:
其他好文 时间:
2020-03-02 19:05:47
阅读次数:
58
素数筛法一直是我前期学习的难题,现在把它总结一下,防止忘记。 ① 普通筛法 O(n√n) 根据定义,一个合数n一定可以由两个数相乘得到,这两个因数一个大于√n,另一个小于√n,所以可以对因数从2到√n进行枚举,判断是否可以被n整除,如无法整除,则为素数。 ② 埃氏筛法 O(n㏒n) 如果一个数是素数 ...
分类:
其他好文 时间:
2020-03-02 18:49:59
阅读次数:
75
积性函数筛法 很多常用的数论函数都是积性函数,而在题目中,我们常常需要线性(甚至更高)的筛法。 对于积性函数,我们可以在筛素数的基础上稍加修改,即可完成线性筛。 首先,注意到积性函数的特点: $$ f(xy)=f(x)\times f(y) $$ 而可以线性筛的积性函数,需要知道以下两个式子的快速求 ...
分类:
其他好文 时间:
2020-02-24 20:43:54
阅读次数:
79
定义法 素数可以由定义法求出,即遍历2到sqrt(x)中是否存在能整除x的数,如果存在则不是素数,如果不存在,则是素数,复杂度是O(n)。在数据量小的时候可以使用。 质数 2可以把4标记成合数 此时 质数集合有 :2 质数 3可以把 6,9 标记成合数 此时 质数集合有 :2,3 质数 5可以把10 ...
分类:
其他好文 时间:
2020-02-23 11:32:29
阅读次数:
74
题面 "传送门" 题目描述 输入格式 输出格式 输入输出样例 说明/提示 时空限制:500ms 128M 数据规模: 对于30%的数据:N(模板题不都是这样吗,你个大菜鸡(自言自语. ) 这题还可以用别的更优的素数筛法,比如 之类的,之后我会考虑写一篇文章具体总结一下。 但是这篇题解我们只考虑欧拉筛 ...
分类:
其他好文 时间:
2020-02-15 19:13:07
阅读次数:
86
说到求素数,其实自己刚学C++那时也遇到过这种问题,如果你那时候叫我写个求1~100以内的素数的程序,我会毫不犹豫的这样写(然后被一堆大佬疯狂吊打qwq): cpp include using namespace std; bool book[20005]; int main(){ //求1~100 ...
分类:
其他好文 时间:
2020-02-14 14:44:06
阅读次数:
71
Eratosthenes筛法(埃氏筛) 时间复杂度:O(nlognlogn) 思路 代码 欧拉筛(线性筛) ...
分类:
其他好文 时间:
2020-02-12 00:28:48
阅读次数:
66
目录 贪心 搜索 数据结构 栈 队列 优先队列 map vector 树状数组 线段树 其他 bitset 字符串 KMP Trie树 Manecher AC自动机 序列自动机 后缀数组 数论 因数 最小公倍数,最大公因数 质因数 质数 质数判断 质数筛法 快速幂 逆元 中国剩余定理 扩展欧几里得 ...
分类:
其他好文 时间:
2020-02-06 19:37:23
阅读次数:
130
一列火车n节车厢,依次编号为1,2,3,…,n。 每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种。 输入格式 输入一个整数n,代表火车的车厢数。 输出格式 输出一个整数s表示n节车厢出栈的可能排列方式数量。 数据范围 1≤n≤60000 输入样例: 3 输出样例: 5 这道 ...
分类:
其他好文 时间:
2020-02-03 13:59:18
阅读次数:
78