![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Number Theory and Math
ACM数学与数论知识
仔姜回锅肉
这个作者很懒,什么都没留下…
展开
-
数学-Zeller函数求日期
int getid(int y,int m,int d){ if(m<3) { y--; m+=12; } return 365*y+y/4-y/100+y/400+(153*(m-3)+2)/5+d-307;}vector<int> date(int id){ int x=id+1789995,n,i,j,y,m,d; n=4*x/146097; x-=(146097*n+原创 2021-05-01 16:41:59 · 420 阅读 · 0 评论 -
数论-素数筛
素数判定的方法:素数的定义:只含有1和它本身两个因子的数称之为素数,1除外——《数学女孩》(图灵新知)第一种: O(n^2) 我愿称之为朴素做法从素数的定义我们很容易得到下列的做法 for i 2 to n-1 if n/i==0 为合数 否则为素数一个简单的常数优化: 既除2以外,只需判断所有的奇数是否是素数因为显而易见2是合数 那么所有2的倍数也必然是合数第二种:O(n^1/2)一个更加高效的优化对正整数n,如果用2到sqrt(n)之间的所有整数除均原创 2021-04-01 22:40:33 · 81 阅读 · 0 评论 -
数学-快速幂与矩阵快速幂
快速幂二进制取幂的想法是,我们将取幂的任务按照指数的 二进制表示 来分割成更小的任务快速幂的递归版本long long fastpower(long long a, long long b) { if (!b) return 1; long long res = fastpower(a, b / 2);//递归调用; if (b % 2) return res * res * a; else return res * res;}while循环版本 相对原创 2021-03-21 16:45:38 · 103 阅读 · 0 评论 -
数论-乘法逆元
乘法逆元求解乘法逆元的方法扩展欧几里得算法pair<int,int> exgcd(int a,int b){ if(b==0) return make_pair(1,0); pair<int,int> tmp=exgcd(b,a%b); pair<int,int> ans=make_pair(tmp.second,tmp.first-a/b*tmp.second); return ans;}快速幂int qpow(l原创 2021-02-28 14:04:43 · 91 阅读 · 0 评论 -
数论-欧拉定理&费马小定理
欧拉定理先介绍欧拉函数欧拉函数的可积性欧拉定理费马小定理原创 2021-02-28 13:56:49 · 103 阅读 · 0 评论 -
数论-扩展欧几里得
欧几里得算法经典的欧几里得算法(辗转相除法) 即GCD算法long long gcd(long long a,long long b){ return b==0? a:gcd(b,a%b);//辗转相除求GCD(a,b)}扩展欧几里得算法那么什么是扩展欧几里得算法呢?简单来理解 在GCD的过程中我们找到了一些不定方程的解(裴蜀定理)如此以来我们不难得到ax+by=gcd(a,b)//b(x1)+(a%b)(y1)=gcd(b,a%b)//ax+by=b(原创 2021-02-28 13:36:24 · 71 阅读 · 0 评论 -
数论-GCD和LCM
GCD原创 2021-02-25 18:30:10 · 291 阅读 · 0 评论