【luogu P1082 同余方程】 题解】的更多相关文章

最近一直在学习数论,讲得很快,害怕落实的不好,所以做一道luogu的同余方程练练手. 关于x的同余方程 ax ≡ 1 mod m 那么x其实就是求a关于m的乘法逆元 ax + my = 1 对于这个不定方程的全部解是 { x = x0 + m/gcd(a,m) { y = y0 - a/gcd(a,m) 我们可以用exgcd来求出其中的一组特解x0 那么什么是exgcd? 先不考虑exgcd,假设当前我们要处理的是求出 a 和 b的最大公约数,并求出 x 和 y 使得 a*x + b*y= gc…
题目传送门 [题目大意] 求关于x的同余方程 ax≡1(mod b)的最小整数解. [思路分析] 由同余方程的有关知识可得,ax≡1(mod b)可以化为ax+by=1,此方程有解当且仅当gcd(a,b)=1,于是就可以用欧几里得算法求出一组特解x0,y0. 那么x0就是原方程的一个解,通解则为所有模b与x0同余的整数,通过取模操作可以把解的取值范围移动到1-b之间,这样就得到了最小整数解. [代码实现] #include<bits/stdc++.h> #define ll long long…
题目链接:https://www.luogu.com.cn/problem/P1082 题目大意: 求关于 \(x\) 的同余方程 ax≡1(mod b) 的最小正整数解. 告诉你 \(a,b\) 求 \(x\). 解题思路: 直接套扩展GCD模板. 实现代码如下: #include <bits/stdc++.h> using namespace std; typedef long long ll; void gcd(ll a , ll b , ll &d , ll &x ,…
题目链接 这道题求关于x的同余方程ax≡1(mod b)的最小正整数解.换而言之方程可以转换为ax+by=1,此时有y为负数.此时当且仅当gcd(a,b)|1时,方程有整数解. 于是乎这道题就变成了ax+by=gcd(a,b)即扩展欧几里得问题.如何解决这个问题呢? 由gcd的基本性质可以得出:gcd(b,a%b)=gcd(a,b),这个值我们设为g.既有ax+by=g,bx1+(a%b)y1=g,变形得,bx1+(a-a/b*b)y1=g,展开得ay1+b(x1-y1*a/b)=g,此时显而易…
题目描述 求关于 x的同余方程 ax≡1(modb) 的最小正整数解. 输入格式 一行,包含两个正整数 a,ba,b,用一个空格隔开. 输出格式 一个正整数 x,即最小正整数解.输入数据保证一定有解. #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; inline int ex…
传送门 求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…
每日一题 day31 打卡 Analysis 题目问的是满足 ax mod b = 1 的最小正整数 x.(a,b是正整数) 但是不能暴力枚举 x,会超时. 把问题转化一下.观察 ax mod b = 1,它的实质是 ax + by = 1:这里 y 是我们新引入的某个整数,并且似乎是个负数才对.这样表示是为了用扩展欧几里得算法.我们将要努力求出一组 x,y 来满足这个等式.稍微再等一下—— 问题还需要转化.扩展欧几里得是用来求 ax + by = gcd(a,b) 中的未知数的,怎么牵扯到等于…
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,…
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,…
题目:https://www.luogu.org/problemnew/show/P1082 用 exgcd 即可. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a,b; int gcd(int a,int b){return b?gcd(b,a%b):a;} void exgcd(int a,…