【模板】gcd和exgcd】的更多相关文章

gcd就是最大公约数,gcd(x, y)一般用(x, y)表示.与此相对的是lcm,最小公倍数,lcm(x, y)一般用[x, y]表示. 人人都知道:lcm(x, y) = x * y / gcd(x, y) 证明起来也不是很难: (这真的是我自己写的,因为博客园不支持这格式……) 至于gcd的求法,想必各位在高中都学过辗转相除法和更相减损之术,这里只讲辗转相除法(更相减损之术略慢) 首先不妨设 x ≤ y,则gcd(x, y)  =gcd(x, x +y) = gcd(x, y - x).所…
LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\),因为b中的a对答案没有贡献,考虑把b变成\(b-(b/a)*a\)答案是一样的 所以就可以变成了\(gcd(b,a%b)\),保证大的数在前面,这样当小的数变成0,大的数就是最大公约数 exgcd就是解线性方程\(ax+by=c\) 有解的条件是\(c\%gcd(a,b)=0\) 然后考虑gcd的…
gcd 辗转相除法求gcd证明 \(gcd(a, b) == gcd(b, a\%b)\) 证明: 设: \(d\)为\(a\)与\(b\)的一个公约数, 则有\(d|b\) \(d|a\) 设: \(a = k \times b + r\) 则有\(r = a \% b\) \(r = a - kb\) 同除以\(d\)可得 \(r\over d\) \(=\) \(a\over d\) \(-\) \(kb\over d\) 又\(\because d|b , d|a\) \(\theref…
1. gcd: int gcd(int a,int b) { return !b?a:gcd(b,a%b); } exgcd: int exgcd(int a,int b,int& x,int& y) { int d=a; if(b){ d=exgcd(b,a%b,y,x); y-=(a/b)*x; } else{ x=;y=; } return d; }…
数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何…
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(ll l,ll r,ll &x,ll &y) { if(r==0){x=1;y=0;return l;} else { ll d=exgcd(r,l%r,y,x); y-=l/r*x; return d; } } 3.求a关于m的乘法逆元 ll mod_inverse(ll a,ll m){ l…
Gcd▪ 欧几里得算法又称辗转相除法,用于计算两个正整数 a, b 的最大公约数.▪ 计算公式为 gcd(a,b) = gcd(b,a mod b).▪ 公式无需证明,记忆即可.▪ 如果要求多个数的最大公约数.易证,每次取出两个数再放回去,不会影响答案正确性.▪ 比如 a,b,c 三个数,答案就是 gcd(gcd(a,b),c) int gcd(int a, int b) { if (!b) return a; return gcd(b, a % b); } 扩展 Gcd▪ 求出 ax + by…
GCD int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); } EXGCD void ex_gcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return; } else { ex_gcd(b, a%b, x, y); int t = x; x = y; y = t - (a / b)*y; } }…
网上看了半天……还是没把欧几里得算法和扩展欧几里得算法给弄明白…… 然后想了想自己写一篇文章好了…… 参考文献:https://www.cnblogs.com/hadilo/p/5914302.html https://blog.csdn.net/sky_zdk/article/details/71023325 <算法竞赛进阶指南>(李煜东)(我不是来推销的) ps:本文讨论范围均在整数以内 一.欧几里得算法 欧几里得算法,即辗转相除法,简称gcd,用于计算两个数的最大公约数.时间复杂度据说l…
数论基础 数论是纯数学的一个研究分支,主要研究整数的性质.初等数论包括整除理论.同余理论.连分数理论.这一篇主要记录的是同余相关的基础知识. 取模 取模是一种运算,本质就是带余除法,运算结果就是余数.取模运算结果的符号由被模数(被除数)决定. \[ 7\%4=3;\space7\%(-4)=3;\\ (-7)\%4=-3;\space(-7)\%(-4)=-3 \] 取模运算的性质 \[ 设a>b>0,有:\\ (a+b)\%c=(a\%c+b\%c)\%c\\ (a-b)\%c=(a\%c-…
gcd就是求a和b最大公约数,一般方法就是递推.不多说,上代码. 一.迭代法 int gcd(int m, int n) { ) { int c = n % m; n = m; m = c; } return n; } 二.递归法 int Gcd(int a, int b) { ) return a; return Gcd(b, a % b); } 但exgcd是个什么玩意??? 百度了一下,百科这么讲的: 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然…
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; ll gcd(ll a,ll b){…
[SinGuLaRiTy-1047] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 质因数分解 void solve(int n) { ==) { printf(); n/=; } ;i<=sqrt(n);i+=) { ) { n/=i; printf("%d*",i); i-=; } } printf("%d\n",n); } 欧拉线性筛素数 #define MAXN 100005 #define…
CSP-S需备模板大全 谨以此文祝愿自己\(CSP-S\,\,2019\,\,\color{red}{RP++!!}\) 算法 二分 while(l<r) { int mid=(l+r+1)>>1; if(check(mid)) l=mid; else r=mid-1; } while(l<r) { int mid=(l+r)>>1; if(check(mid)) r=mid; else l=mid+1; } 详见--二分写法详解 数学 快速幂 int qpow(int…
传送门 求ax%b = 1,即ax - by = 1: 很明显这是一个exgcd的形式. 那么要做这道题,首先需要gcd和exgcd的算法作铺垫. gcd(辗转相膜法): int gcd(int a,int b){ ){ return a; } return gcd(b,a%b); } exgcd就是在求出gcd的基础上,求出ax+by = gcd(a,b)的一组x,y的解: int exgcd(int a,int &x,int b,int &y){ ){ x = ; y = ; retu…
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 247 Accepted Submission(s): 107   Problem Description One day I was shopping in the supermarket. There was a cashier counting coins serio…
作为一个oier,适当的整理是有必要的.蒟蒻根据自己的理解,筛选出考noip应当掌握的知识点.可能后期还有解题思路和模板,先挖个坑慢慢补呗. 60级张炳琪Noip知识点总结 可能是本人比较弱,写的内容比较简单,主要是应对noip知识点的覆盖.其实感觉noip大多还是考思维(可能大佬们认为不需要思考..) 一.知识点 (一).暴力求解法 1.模拟算法,模拟模型建立 2. dfs洪水模型  迷宫模型  最优性可行性剪枝,记忆化搜索 3. bfs    双向宽搜    判重的方法 4.枚举法 (二)图…
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔兰数 常用数学公式 技巧经验 容斥 组合计数 区间筛 博弈 有趣的式子 gcd有关 数论模板库 黑科技 \(long\ long\)相乘取模 子集枚举 高维前缀和 各种线性筛 高级算法 Exgcd Lucas EXCRT BSGS 高斯消元 线性基 裴蜀定理 FFT 拉格朗日插值 NTT FWT 数论 Tag…
zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可做(人傻),然而BC也在搞...于是开始做第四道: 大约1h10' B题A了..1h30' C题也A了= =: 后来去搞F,公式推得很快,并且很自信是对的..于是筛!搞!,一交 TLE?!,然后意识到 结果可以直接筛,可以省去搞得过程 不虚,改!!然后时间到了...毫无贡献的傻逼一个....可怕.…
1.Jams倒酒(pour) Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很穷,不像他那么土豪.有时,他们会因为负担不起a ml 或者 b ml酒的消费,而不得不离去.因此,Jams决定出手第三种体积的啤酒(较小体积的啤酒). Jams只有两种杯子,容积分别为 a ml 和 b ml,而且啤酒杯是没有刻度的.他只能通过两种杯子和酒桶间的互相倾倒来得到新的体积的酒. 倒酒步骤…
Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5489    Accepted Submission(s): 2164 Problem Description One day I was shopping in the supermarket. There was a cashier counting coins…
X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8416    Accepted Submission(s): 3066 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod…
时隔一年,相比去年一无所知的自己,学到了不少东西,虽然还是很弱,但也颇有收获[学会了打板QAQ] 现在是2017.11.9   21:10,NOIP2017的前两天晚上,明天就要出发,做最后的总结 NOIP考的算法不如省选.NOI广,但也不少,而更注重思维量[本蒟蒻思维就很不好] 总的来说有以下: 1.模拟 2.搜索 3.二分.贪心.倍增等算法思想 4.动态规划 5.图论 6.数论.数学 7.数据结构 模拟 模拟就没什么好说的吧,按照题目所说的去做,但要非常注意的就是考虑周全,尤其是要分类讨论的…
前言 由于 \(\{\mathrm{CRT}\}\subseteq\{\mathrm{exCRT}\}\),而且 CRT 又太抽象了,所以直接学 exCRT 了. 摘自 huyufeifei 博客 这么抽象的东西我怎么可能会写 前置技能 gcd/lcm exgcd 快速乘 参考资料 一篇未通过的洛谷日报 by AH_ljq 比较直观的 exCRT 学习笔记 by Milky Way 我之前写过的 exgcd 学习笔记 huyufeifei 对 CRT 的劝退 用途 用于求一个关于 \(x​\)…
P1082 同余方程 题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,…
模板题 注意exgcd函数要稍微记一下 #include<cstdio> #include<cctype> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i++) #define _for(i, a, b) for(int i = (a); i <= (b); i++) using namespace std; void read(int& x) { int f…
原题传送门 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们会因为负担不起aml或者bml啤酒的消费,而不得不离去.因此,Winy决定出售第三种体积的啤酒(较小体积的啤酒). Winy只有两种杯子,容积分别为a ml和b ml,而且啤酒杯是没有刻度的.他只能通过两种杯子和酒桶间的互相倾倒来得到新的体积的酒. 为了简化倒酒的步骤,Winy规定: (1)a≥b:…
题目描述: 解答出来了上一个题目的你现在可是春风得意,你们走向了下一个题目所处的地方 你一看这个题目傻眼了,这明明是一个数学题啊!!!可是你的数学并不好.扭头看向小鱼,小鱼哈哈一笑 ,让你在学校里面不好好听讲现在傻眼了吧~来我来!三下五除二,小鱼便把这个题目轻轻松松的搞定了.flag格式为cyberpeace{小写的你解出的答案} 附件: 在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d 前置知识: 非对称加密算法--RSA加密原理 ------…
Looooops(点击) A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e., a loop which starts by setting variable to value A and while variable is not equal to B, repeats state…
目录 总结 A.不幸的7 B.选举 C. 差的绝对值之和 D. 路径通过 总结 初一第一 一般,最后一题没打好 不难发现,教练出水了,可能是信心赛 A.不幸的7 暴力,没有逻辑可言 #include<bits/stdc++.h> using namespace std; int n,ans,t,k; bool pd(int x) { while(x) { if(x%10==7)return false; x/=10; } return true; } int main() { cin>&…