线性方程:设a和b是两个整数,g = gcd(a,b)是a和b的最大公约数。求满足方程 a*x + b*y = g 的整数解x和y。 递归版:扩张欧几里德 在用欧几里德算法算a和b的最大公约数时,我们依次得到: a = q(1) * b + r(1) b ...
今天终于弄懂了扩展欧几里德算法,有了自己的理解,觉得很神奇,就想着写一篇博客。 在介绍扩展欧几里德算法之前,我们先来回顾一下欧几里德算法。 欧几里德算法 辗转相除法 : 辗转相除法求最大公约数,高中就学了,但当时知其然不知其所以然,直到大学才真正理解它的精髓。 理解辗转相除,关键在于理解 gcd a,b gcd b,a b 那么怎么去理解呢 下面是我的理解: 首先对于非负整数a,b,一定可以写成 ...
2019-07-30 00:44 0 516 推荐指数:
线性方程:设a和b是两个整数,g = gcd(a,b)是a和b的最大公约数。求满足方程 a*x + b*y = g 的整数解x和y。 递归版:扩张欧几里德 在用欧几里德算法算a和b的最大公约数时,我们依次得到: a = q(1) * b + r(1) b ...
#include <iostream> using namespace std; /* *二分查找思想:1、数组从小到大排序;2、查找的ke ...
给定一个单向链表的头结点,要求将链表反转,并返回新的头结点。 一、迭代实现 思路:遍历链表,依次调整每个节点的指针域。 定义 结点p指向当前节点 结点q指向当前节点的下一个结点(p->next非空时) 结点r指向当前节点的前 ...
快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 就以a的b次方来介绍: 把b转换成二进制数,该二 ...
上次呢,我们留下了一道题,今天我们来一起看一看: 题目链接:https://www.cnblogs.com/gaozirong/p/10547434.html 这是我写的程序,大家可以对照参考一下(C++): 今天我们来讲一讲进制,首先,进制是什么? 进制也就是进位计数 ...
...
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 第一种证明: a可以表示成a = kb + r,则r ...
...