数论之扩欧 QB_UDG 2016年11月8日11:34:40 原理: 设 a*x1+b*y1=gcd(a, b); 设 b*x2+(a%b)*y2=gcd(b, a%b); 由欧几里德定理知: gcd(a, b)==gcd(b, a%b) 所以==>a*x1+b*y1=b*x2+(a%b)*y2
转载 2016-11-09 21:09:00
71阅读
2评论
数论之扩欧QB_UDG 2016年11月8日11:34:401. 扩展欧几里德算法 用途:在已知整数a,b的情况下求不定方程ax+by=gcd(a,b)的一组整数解x,y;原理: 设 a*x1+b*y1=gcd(a,b); 设b*x2+(a%b)*y2=gcd(b, a%b); 由欧几里...
转载 2017-04-14 09:36:00
89阅读
2评论
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =
原创 2022-08-10 10:36:09
129阅读
数论-扩展欧几里得算法1.推导过程2.代码模板// 求x, y,使得ax + by = gcd(a, b)int exgcd(int a, int b, int &x, int &y){ if (!b) {
原创 2022-06-10 17:27:18
227阅读
度娘百科说: 首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相关定理可以证明,反正我信了) 所以 ax+by = gcd(a, b) * k 也肯定有解 (废话,把x和y乘k倍就好了) 所以,这个公式我们写作ax+by = d,(gcd(a, b)
转载 2017-08-13 16:25:00
141阅读
2评论
R - 青蛙的约会 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方
具体内容见紫书p313-p314 一、扩展欧几里得算法 思想:找出一对整数(x,y),使得ax+by=gcd(a,b) 举例:当“a=6,b=15”时,gcd(6,15)=3,故可以得到解“x=3,y=-1”,当然还有其他解“x=-2,y=1”。 程序: 下面方程中的a,b,c为任意整数。 结论1:
转载 2017-09-10 10:56:00
105阅读
2评论
题意:给你一个数 n ,n 是以 a b 为第一项和第二项数列的某一项,求一个满足的 a b ,要求b尽可能的小(a<=b). f[1] = a,f[2] = b,f[3]=a+b,f[4]=a+2*b,f[5] = 2*a+3*b.... 我们发现新的数组的第 k 项为 原来的斐波拉契数列的第 k
原创 2021-07-21 16:14:50
238阅读
最大公约数GCD 整数a和b的最大公约数记为gcd(a,b) <1 经典的欧几里得算法,辗转相除
1.欧几里得函数有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做? 欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b) ,这样,我们就可以在...
转载 2017-09-05 17:26:00
235阅读
2评论
欧几里得:int gcd(int a, int b){ return !b ? a : gcd(b, a%b);}int lcm(int a, int b)//最小
原创 2017-10-10 14:23:43
130阅读
1.欧几里得函数有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做? 欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b) ,这样,我们就可以在...
转载 2017-09-05 17:26:00
148阅读
2评论
分了好多好多小节,觉得自己应该写的比网上其他题解都更适合小白理解了(haobuyaolian 1 引例 在开始枯燥乏味的数论推理之前,我们先来看两只有趣的小青蛙吧 (洛谷P1516)两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自 ...
转载 2021-06-19 23:33:00
93阅读
2评论
exgcd
原创 2018-11-28 19:40:40
417阅读
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r。当中a,b。q,r都是整数。则gcd(a,b)=gcd(b,r)。即gcd(a,b)=gcd(b,a%b)。 递归代码: __int64 gcd(__int64 a,__int64 b) { return b
若a,b是整数,那么对于任意整数x,y,ax+by是gcd(a,b)的倍数,且一
扩展欧几里得不定方程对于ax+by=c来说,如果c%gcd(a,b)==0,则此不定方程有解。特别的,当c==1时,方程为欧几里得不定方程,当且仅当gcd(a,b)==1时,有解。#include<cstdio>int extgcd(int a,int b,int &x ,int &y){ int d=a; if(!b) { x=1,y=0;...
原创 2023-06-27 10:14:15
82阅读
输入两个数a,b求x,y满足a*x+b*y=gcd(a,b)比如说输入3,5 解出来x=2,y=-1所以说,怎么解?我们假设已经求出x1,y1使b*x1+(a%b)*y1=gcd(b,a%b)成立那么x1与x,y1与y的关系是什么呢因为gcd(a,b)=gcd(b,a%b)所以a*x+b*y==b*x1+(a%b)*y1即([]为取整)a*x+b*y==b*x1+(a-b*[a/b])*
原创 2022-07-05 10:01:08
67阅读
查阅博客: http://blog.163.com/justly@yeah/blog/static/1210370002009530105732555/ BIT1052 poj1061 青蛙的约会 http://acm.bit.edu.cn/mod/programming/view.php?a=538 模线性方程:ax + by = c (
原创 2023-09-12 10:51:59
55阅读
求解 $ax + by = d$ 的解x和y。有解的条件为 d | gcd(a, b) 算法原理 假设现在我们已经得知了 $by + (a % b)x = d$ 的解 y 和 x 将 $by + (a % b)x = d$ 等价变形可以得到 $ax + b(y - \lfloor \frac{a}{b} \rfloor x) = d$ 所以说如果我们先计算了$by + (a % b)x = d$
原创 2023-08-05 21:46:56
631阅读
  • 1
  • 2
  • 3
  • 4
  • 5