![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_模板系列
文章平均质量分 59
tagyona
独立思考。不论是做题,还是人生。
展开
-
Miller-Rabin随机性素数测试算法(Miller_Rabin模板)
转载自:http://www.dxmtb.com/blog/miller-rabbin/普通的素数测试我们有O(√ n)的试除算法。事实上,我们有O(slog³n)的算法。定理一:假如p是质数,且(a,p)=1,那么a^(p-1)≡1(mod p)。即假如p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。(费马小定理)该定理的逆命题是不一定成立的,但是转载 2013-08-09 18:11:03 · 8105 阅读 · 0 评论 -
线性时间内筛素数+欧拉函数+莫比乌斯函数
从别人博客里摘录过来改写的:https://quartergeek.com/sieve-prime-in-linear-time/typedef long long LL;#define mn 100000+5LL ph[mn];bool vis[mn];int primes, prime[mn];void Init(){ ph[1] = 1; primes=0;转载 2013-08-19 17:02:57 · 1972 阅读 · 0 评论 -
Timus1132(二次剩余方程求解)
直接从ACdreamers神的博客里搬过来的(看原创请戳这里)题意:就是给出方程,p为素数,求在区间内的解。 这个思路很简单,详见:http://algo.ftiasch.com/tag/number-theory/#include #include #include #include #include #include using namespace转载 2013-09-19 19:47:48 · 675 阅读 · 0 评论 -
数论知识汇总(持续更新中)
1.求逆元http://blog.csdn.net/z690933166/article/details/98207572.离散对数(a^x=b(mod c)求最小非负整数解问题)http://blog.csdn.net/z690933166/article/details/94565473.Miller_rabin素数测试http://blog.csdn.net/z6原创 2013-08-13 11:42:59 · 727 阅读 · 0 评论 -
原根
1135 . 原根时间限制:1 秒 空间限制:65536 KB 分值: 0设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)给出1个质数P,找出P最小的原根。Input输入1个质数P(3 Output输出P最小的原根。直接应用上一篇博文的结论即可。#include #inc原创 2013-09-12 23:43:24 · 2205 阅读 · 0 评论 -
快速求奇素数的所有原根
转载自:ACdreamers神博客(请戳这里)定理:如果p为素数,那么素数p一定存在原根,并且p的原根的个数为phi(p-1).设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1仅当指数为P-1的时候成立.(这里P是素数).求原根目前的转载 2013-09-12 22:59:16 · 7675 阅读 · 0 评论 -
特征根方程
考虑二阶常系数线性齐次递推数列 有方程该方程称为该数列的特征方程,该方程的两个根称为数列的特征根。若特征方程有两个不相等的根则该数列的通项公式为其中为常数,由唯一确定。若特征方程有两个相等实根 则该数列的通项公式为其中为常数,由唯一确定。若特征方程有一对共轭复根情况不作要求 用特征根求解著名的斐波那契数列,其递推公式为:,,其特征方程为解转载 2013-09-11 21:16:50 · 4046 阅读 · 0 评论 -
高次同余方程式的解数及解法
转自ACdreamers神的博客:(请戳这里)定理一:若是k个两两互质的正整数,,则同余式 (1)与同余式组 (i=1,2,3,...,k) (2)等价,并且若用表转载 2013-09-11 15:27:57 · 5612 阅读 · 0 评论 -
Stein算法——求最大公约数
Stein算法是一种计算两个数最大公约数的算法,它是针对欧几里德算法在对大整数进行运算时,需要试商导致增加运算时间的缺陷而提出的改进算法。typedef long long LL;LL gcd(LL u,LL v){ if (u == 0) return v; if (v == 0) return u; // look for factors of 2 if原创 2013-09-11 09:19:47 · 1625 阅读 · 0 评论 -
求1~n中与m互质的数的个数
dfs写法:LL fac[80],num;void Divide(LL m){ num=0; if(!vis[m]) { fac[num++]=m; return; } for(int i=0;ik&&m>1;i++) { if(m%prime[i]==0) {原创 2013-09-10 23:34:06 · 3632 阅读 · 1 评论 -
解一元线性同余方程组模板
void ext_gcd(LL a,LL b,LL &d,LL &x,LL &y){ if(!b) { x=1; y=0; d=a; return ; } else { ext_gcd(b,a%b,d,y,x); y-=a/b*x; }}LL a[m原创 2013-08-13 11:28:18 · 1677 阅读 · 0 评论 -
逆元模板总结
以前一直在用逆元,没想到今天用模板卡了,还是对概念了解的不够。今天在kuangbin神的指导下,稍稍懂了一点。逆元:定义 对a∈Zm,存在b∈Zm,使得a+b ≡ 0 (mod m),则b是a的加法逆元,记b= - a。定义 对a∈Zm,存在b∈Zm,使得a×b ≡1 (mod m),则称b为a的乘法逆元。我们通常所指的是乘法逆元。然而乘法逆元的应用也需要条件:原创 2013-08-07 18:10:05 · 3176 阅读 · 0 评论 -
POJ 2417 Discrete Logging(解高次同余方程)
先奉上AC神的baby step giant step算法及其扩展介绍两种不同的模板:AC神版:#include #include #include #include using namespace std;typedef long long LL;const int maxn = 65535;struct hash{ int a,b,next;} Hash[原创 2013-07-24 22:27:27 · 1529 阅读 · 1 评论 -
中国剩余定理模板
void ext_gcd(int a,int b,int &d,int &x,int &y){ if(!b) { x=1;y=0;d=a; return ; } else { ext_gcd(b,a%b,d,y,x); y-=a/b*x; }}int a[100],m[100],M原创 2013-08-12 19:46:33 · 934 阅读 · 0 评论 -
Pollard_rho算法模板(大整数的因子分解)
还是没怎么看懂Pollard_rho算法的原理,以后再来啃过。。。int pollard_rho(int n, int c){ int x, y, d, i = 1, k = 2; x = rand() % (n - 1) + 1; y = x; while (true) { ++i; x = (modular_multi(x, x, n) + c) % n; d = g原创 2013-08-09 22:27:28 · 7949 阅读 · 0 评论 -
大整数模板
从virtual judge上摘录下来的模板,有空试下。#include #include #include #include #include #include using namespace std;#define DIGIT 4 //四位隔开,即万进制#define DEPTH 10000 //万进制#define MAX 80转载 2013-08-17 16:32:17 · 1377 阅读 · 0 评论