题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=775

关于扩展欧几里得算法还是推一遍好啦;

有方程:a*x+b*y=d=gcd(a, b) --- 1式(只要a, b不全为0则此方程必有解,不过我不会证明,望大神路过时教一下);

又有gcd(a, b)=gcd(b, a%b); --- 2 式 (证明: http://www.cnblogs.com/geloutingyu/p/6209026.html)

将2式代入1式中得到:b*x1+(a%b)*y1=b*x1+(a-a/b*b)*y1=a*y1+b*(x1-a/b*y1);----3式

比较1式和3式,由恒等式定理可得:x=y1; y=x1-(a/b)*y1; 即上一层递归式中的y就是本层递归式中的x,上一层递归式中的y就是 x1-(a/b)*y1;

代码:


 #include <bits/stdc++.h>
#define ll long long
using namespace std; int x, y; void exgcd(int a, int b)
{
if(!b) //***b==0结束递归条件
{
x=;
y=;
return;
}
exgcd(b, a%b);
int t=x;
x=y;
y=t-(a/b)*y;
} int main(void)
{
int a, b, d;
while(~scanf("%d%d", &a, &b)) //××本题中这里用cin 会超时,即便加了输入外挂也一样,并不懂why;
{
exgcd(a, b);
printf("%d %d\n", x, y);
}
return ;
}


当然上面的exgcd函数还可以写的简洁一些:
 void exgcd(int a, int b, int& d, int& x, int& y){
if(!b){
x=, y=, d=a;
}else{
exgcd(b, a%b, d, y, x);
y-=x*(a/b);
}
}

ecgcd(解二元不定方程)的更多相关文章

  1. Re:Exgcd解二元不定方程

    模拟又炸了,我死亡 $exgcd$(扩展欧几里德算法)用于求$ax+by=gcd(a,b)$中$x,y$的一组解,它有很多应用,比如解二元不定方程.求逆元等等,这里详细讲解一下$exgcd$的原理. ...

  2. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  3. 使用代数方程库 Algebra.js解二元一次方程

    假设二元一次方程如下: x + y = 11 x - y = 5 解方程如下: <!DOCTYPE html> <html lang="zh-CN"> &l ...

  4. HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛

    题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...

  5. nyoj 64-鸡兔同笼 (解二元一次方程)

    64-鸡兔同笼 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:26 submit:58 题目描述: 已知鸡和兔的总数量为n,总腿数为m.输入n和m, ...

  6. c语言解二元二次方程组

    设a和b是正整数 a+b=30 且a*b=221 求a和b的值 思路就是穷举a和b的值,每次得到a和b的一个值,看是否同时满足a+b=30且a*b=221,如果满足,那么就输出. 那么a和b的的取值范 ...

  7. VBA Promming——分支语句(解二元一次方程)

    分支语句 If expression1 Then expressions ElseIf expression2 Then expressions Else expression End If 注:VB ...

  8. 扩展gcd求解二元不定方程及其证明

    #include <cstdio> #include <iostream> using namespace std; /*扩展gcd证明 由于当d = gcd(a,b)时: d ...

  9. 容斥原理解一般不定方程——cf451E经典题

    /* 给定n个盒子,第i个盒子有ai朵花,现在从中选取m朵花,问选取方案数 用容斥定理解决 m=x1+x2+..+xn C(m+n-1,n-1)+sum{ (-1)^p * C(m+n-1-(1+n1 ...

随机推荐

  1. CSS相邻兄弟选择器

    相邻兄弟选择器定义:选择紧接在另一个元素后的元素,而且两者有着相同的父元素. 代码一:<body> <h1>This is a heading.</h1> < ...

  2. Redis学习笔记十:独立功能之监视器

    通过执行 monitor 命令可以让客户端自己变成一个监视器,实时接收并打印当前处理的命令请求的相关信息. 127.0.0.1:6379> monitor OK 1451752646.83727 ...

  3. java中二进制和流的相互转换

    流转二进制 public static byte[] toByteArray(InputStream in) throws IOException { ByteArrayOutputStream ou ...

  4. thusc滚粗记

    day0 下午到了北京,雾霾还是那么大.. 到宾馆报个到,和哥哥吃了一波饭,去不起西郊...只能去五道口了... 晚上和wyz队长见面,wyz队长好帅啊...没带手机拍照真是个错误TAT day1 今 ...

  5. http://five-js.envylabs.com/

    一个很有意思的播报javascript最新资讯的网站http://five-js.envylabs.com/

  6. js生成当前时间

    js生成当前时间 var today=new Date(); function itArray(){ this.length=itArray.arguments.length for(var i=0; ...

  7. Delphi Dll 消息处理

    转载:http://blog.csdn.net/lailai186/article/details/8770643 事情的导火线是GIF图片的显示. 在应用程序中, 利用三方的GIFImage.pas ...

  8. BZOJ 4580: [Usaco2016 Open]248

    Description 一个序列,每次可以把相邻的两个数合为一个,价值+1,求最后的最大价值. Sol 区间DP. \(f[i][j]\) 表示 \(i-j\) 中合成一个数字为多少,转移就是枚举断点 ...

  9. Python自动化之IO多路复用

    单线程.多线程和异步对比图 灰色的是阻塞 IO多路复用 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心 ...

  10. String,StringBuffer,StringBuilder区别

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...