数论
GBLoi
这个作者很懒,什么都没留下…
展开
-
矩阵乘法
矩阵乘法(英语:matrix multiplication)是一种根据两个矩阵得到第三个矩阵的二元运算,第三个矩阵即前两者的乘积,称为矩阵积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。矩阵乘法满足结合律,不满足交换律;一般采用结构体存储矩阵const int N=4;struct matrix{ int n,m; LL g[N][N...原创 2020-01-25 10:35:30 · 2418 阅读 · 0 评论 -
快速幂
快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为O(log₂N),与朴素的O(N)相比效率有了极大的提高。其核心思想就是如果kkk是偶数 那么 x ^ k = ( x ^ 2 ) ^ (k / 2 )如果kkk是奇数 那么 x ^ k = x * ( x ^ ( k - 1 ) )递归实现即可#define LL long longLL quickpow(LL x,LL...原创 2020-01-27 19:27:44 · 169 阅读 · 0 评论 -
最大公约数&最小公倍数
辗转相除法求最大公约数是一种常用的求两个数的最大公约数的方法。方法是:以小数除大数,如果能整除,那么小数就是所求的最大公约数。否则就用余数来除除数;再用新除法的余数去除刚才的余数。依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。最大公约数代码实现非常简单#define LL long longLL gcd(LL a,LL b) //最大公约数 { if(b==...原创 2020-02-06 13:50:32 · 784 阅读 · 0 评论 -
分数 模板
实数即使用double定义也会损失一定精度,在精度要求很高时,就需要用到分数0.最大公约数&最小公倍数#define LL long longLL gcd(LL a,LL b) //最大公约数 { if(b==0) return a; return gcd(b,a%b);}LL lcm(LL a,LL b) //最小公倍数 { return a*b/gcd(a...原创 2020-02-06 14:27:39 · 174 阅读 · 0 评论 -
质数|约数笔记
用筛法求素数的基本原理,是把从1开始的某一范围内的正整数从小到大顺序排列,逐步筛掉非素数留下素数。1.朴素筛法时间复杂度O(n3/2)O(n^3/2^)O(n3/2)很容易想到从1枚举到n,挨个判断是不是素数;Code:bool ifprime(LL x){ int i,j; for(i=2;i*i<=x;i++) if(x%i==0) return f...原创 2020-02-08 13:56:48 · 163 阅读 · 0 评论