扩展欧几里德算法:

应用:

①求解不定方程

②求解同余方程

③求解模的逆元

看欧拉定理看吐了也还是有超级~~多的题目不会做,看的有晕又困!难受,看会别的压压惊~~希望拓展欧几里德的题目能对我稍稍稍稍稍稍的友好点~~

拓展欧几里得定理最初的贝祖定理是,如果a、b是整数,那么一定存在x、y,使ax+by=gcd(a,b),换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍。

即如果ax+by=1,那么ab一定互质,gcd(a,b)=1。

那么只要求出最大公约数就能知道到底可不可以成立啦~~

巴特!身为一个优秀的学生,我们必须知道的不是是否有解而是解是多少,这就迫使我们需要去寻找ax+by与最大公约数的关系,经过大佬们严密的推算,得出 x = y1 , y = x1 – a/b*y1,这就是我们利用拓展欧几里得算法的中心公式哒!大佬博客在这里!

模板大大:

int gcd(int a,int b,int &x,int &y)
{if (b == 0){x = 1,y = 0;return a;}int ans = e_gcd(b,a%b,x,y);int tmp = x;x = y;y = tmp - a/b*y;
}

这里求出来的就是特解x0,y0,对于ax+by=d来说,x增加b/d,y减少a/d等式一直成立(x增加了a*b/d,y增加了a*b/d,都是变化了一个最小公倍数),所以鸭,只要按着这个最小公倍数的方法变化,就可以得到其他所有的解啦(无论是x最小还是y最小),所以通解公式如下:

x = x0 + (b/gcd)*t;
y = y0 - (a/gcd)*t;

更一般来说,如果不知道d与ab的最小公约数的关系,可以现用d%gcd(a,b)!=0,那么等式无解,否则如果d% gcd(a,b) == 0 且d / gcd(a,b) = t,那么求出方程 a * x + b * y = gcd(a,b)的所有解x,y,将x,y乘上t,对应的x’,y’即是方程a * x + b * y = t * gcd(a,b)的解!

拓展欧几里得呵呵哒不过如此 lv_1

*UVA10104 Euclid Problem 终于看见令人感动的模板题了!

拓展欧几里得还是有点点让人头秃的呜呜呜  lv_8

*HDU1576 A/B 大概最基本的题目,其他的题目都比他难了吧,可能算一道入门提,由于我太菜,不可能放进第一个题目下了,很惭愧。我第一眼想到的是用乘法逆元,本来以为我又想错了思路,再仔细一想,其实大概拓展欧几里得就是可以求乘法逆元??(不过我是由费马小定理求的这个乘法逆元就是了hhh,实在想试试拓展欧几里得也不是不可以鸭~~)

*UVALive6428 A+B 普通模板题目~~公式给的十分露骨,符合上文的更一般情况的题目……坑点在于a、b、s可能是0。

*1352 集合计数  大概是,不知道是拓展欧几里得的题目的话,就不可能知道它该怎么做了吧!(知道了我也不会嘤嘤嘤~),知道了之后也有一个特别的步骤,那就是求集合数,怎么求呢?就是求出x最小时y的大小,以及y最小时x大小,两个x相减的值就是集合数目啦~~

*poj 1061 青蛙的约会 也算是一个很经典的题目了,第一次看的印象还在~~详情……还是翻8月20八九的训练日记吧

*bzoj  2242: [SDOI2011]计算器 三个公式:

1、给定y,z,p,计算Y^Z Mod P 的值;

2、给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数;

3、给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数。

第一个公式显然快速幂,第二个公式显然拓展欧几里得,第三个是一个高阶同余方程,是要用到GSBS算法的,不过也是一个模板题就是辽~~模板不好背哇~~

* poj 2115 C looooops 这个公式的列出是难点。再就是求最小x的时候用的是一个很新颖的方法(因为那个循环减去b/d的方法太耗时啦~~,就先是求出了这个公式的解x、y,再利用了:

b=b/gcd(a,b);
printf("%lld\n",(x%b+b)%b);

求得最小的整数解x~~y的话呀,利用ax+by=c来带入求值呀。

*SGU 106 The equation  比起拓展欧几里得改进了一点点,不过难度也仅限于这个范围了,因为它直接告诉了你公式,相当于直接提示用拓展欧几里得做了。(需要特判a=0/b=0/a=b=c=0/a=b=0等特殊情况)

由于x=x0+b/gcd(a,b)*t;给出x的范围,进而就可以求出x有几对了。(可以用(x2-x)/(b/d)求出还可以增加几部分,减少类似,求得增加中x与y较少的,减少中x与y更大的,然后相减(如果用x-x1就相加)得出结果~~

*Codeforces Beta Round #7 C.Line 也是告诉了公式,要求的是x+y大于零的对数。不知道为什么不需要判断这个,可能所有的情况都满足?反正写上特判也不算很多时间吧~~~

拓展欧几里得哥求你放过我!! lv_0

拓展欧几里得+例题~相关推荐

  1. 详细讲解【拓展欧几里得】

    exgcd(拓展欧几里得) 1.回顾辗转相除法求最大公倍数: (辗转相除法和下面所讲到的算法里面的m和n没什么关系可正可负 更没有大小关系的区分) 代码: #include<stdio.h> ...

  2. 拓展欧几里得定理的应用

    扩展欧几里得定理的运用 首先,先重复一下拓展欧几里得的内容: 对于不全为 0 的整数a.b,一定存在一组解 x,y,使得 ax + by == gcd(a,b) 先说一下这个定理的三个用处(但是小细节 ...

  3. poj1061-青蛙的约会(拓展欧几里得java)

    题目: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚 ...

  4. 拓展欧几里得模板/求逆元模板(java)

    拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...

  5. 杭电2669拓展欧几里得

    杭电2669 给a,b求Xa Yb = 1.如果没有则输出sorry. 可以通过拓展欧几里得指导Xa Yb = gcd(a,b). 不言而喻要判断gcd(a,b)是否等于1.如果不等于1,那么就是so ...

  6. A/B HDU - 1576 (逆元或拓展欧几里得或数学公式)多解法求大数结果

    题意:求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). 思维:(1)逆元+扩展欧几里得算法:满足a*k≡1 (mo ...

  7. 拓展欧几里得小结(初级理解)

    什么是拓展欧几里得?简单的说,就是求关于x,y的方程 ax + by = gcd(a,b) 的所有整数解 现在我们令g = gcd(a,b)则方程变成了ax + by = g 假如我们现在知道了关于这 ...

  8. 拓展欧几里得 [Noi2002]Savage

    对于一个野人,他(她?)所在的位置,(C[i]+x*p[i])%ans,是的,暴力枚举每一个ans,用拓展欧几里得求出每两个wildpeople(wildrage?)相遇的年份,如果小于最小的寿限(就 ...

  9. AcWing 878. 线性同余方程(拓展欧几里得)

    题目链接 https://www.acwing.com/problem/content/880/ 思路 ai×xi≡bi(modmi)a_i\times x_i≡b_i(mod \ m_i)ai​×x ...

最新文章

  1. http请求过程简要
  2. The Illustrated Transformer:中英文(看原文,很多翻译是错误的)
  3. 总结:ps aux指令
  4. gitHub网站上常见英语翻译
  5. 好看的个人qq主页-导航页源码
  6. 【Openstack】实录手动部署Openstack Rocky 双节点(3)- Glance
  7. Hive操作语句实例讲解(帮助你了解 桶 bucket)
  8. 怎么做app图标_App拉新:以老拉新活动怎么做?
  9. Qt:QListWidget的item上实现右键菜单
  10. linux中符号链接啥意思,linux – 为什么我不能在符号链接中使用“...
  11. python科学计算库-python 科学计算基础库安装
  12. TPL中的task并不是thread
  13. mysql的粒度_MySQL中权限的粒度和时效性
  14. Linux Cgroups详解(一)
  15. 如何覆盖上一次commit_如何在 Linux 上一次性批量重命名一组文件?
  16. python爬取app store的评论_用python爬取苹果官网店铺
  17. 明日书苑:《九成宫醴泉铭》单字放大米字格临帖字帖
  18. 创建第一个Android Kotlin应用
  19. 论文阅读笔记之Replacing Mobile Camera ISP with a Single Deep Learning Model
  20. win10连无线但是无网络连接到服务器,简单几步解决win10连接wifi显示无internet访问的问题...

热门文章

  1. python新手程序员工资-Python 程序员的工资能有多高?
  2. 好用的iPhone手机第三方便签备忘录记事本
  3. influxdb客户端简单使用
  4. Mongodb基础命令与用法
  5. 产品细节中的情感化设计
  6. 简单一招,严禁迅雷偷偷上传!(转自九月论坛)
  7. 域控如何查看计算机在线,查看域控制器上登录用户
  8. #小车记1--树莓派系统安装及初始化教程
  9. linux枚举pcie设备,pcie设备枚举(转载)
  10. NTP网络时间服务器是如何完成它的授时服务的?