扩展欧几里得整理-1

原创 2018年04月15日 00:16:47

重点 :求解最小正整数解

套用exgcd模板求得的是一组特殊解,但其实这一个方程式是有一个解系,在很多问题中是要你求得最小整数解

a,b>0时: 直接 

x=(x%b+b)%b;

即可,再代入解出y

a,b,存在负数时,

将b改为-b,再按套路求解

如:

            if(t<0)  
            t=-t;  
            x=(x%t+t)%t;  

模板

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<stack>
using namespace std;
int m,n;
int gcd(int a,int b){
	return b == 0 ? a : gcd(b , a%b);
}
int exgcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1; y=0; return a;
	}
	int r=exgcd(b,a%b,x,y);
	int t=x; x=y; y=t-a/b*y;
	return r;
} 
int main(){
	int a,b,c,x,y;
	while(cin>>a>>b){
		if(gcd(a,b)!=1) {
			cout<<"sorry"<<endl;
			continue;
		}
		exgcd(a,b,x,y);
		x=(x%b+b)%b;
		y=(1-a*x)/b;
		cout<<x<<" "<<y<<endl;
	}
	return 0;
}

即可,再代入解出y

a,b,存在负数时,

将b改为-b,再按套路求解

如:

扩展欧几里德(顺带说一下取模)

扩展欧几里德定律:  对于不完全为0的非负整数a,b,gcd(a, b)表示a, b的最大公约数,必定存在整数对x,y,满足a*x+b*y==gcd(a, b)。 证明:(转) a*x1+b*y1...
  • tree__water
  • tree__water
  • 2016-08-03 23:47:20
  • 2841

BZOJ 1407: [Noi2002]Savage 扩展欧几里得

Input 第1行为一个整数N(1
  • just_sort
  • just_sort
  • 2017-04-27 20:44:51
  • 401

扩展欧几里得详解

  • 2017年03月13日 21:21
  • 4KB
  • 下载

扩展欧几里得专题

最近一周都在刷扩展欧几里得、逆元、整除之类的数论专题,颇有心得,决定写一发。虽然说是扩展欧几里得专题,但是其实里面加了几道普通数论题,不想做的可以跳过。因为我是随便找的题目,所以题目的难度不是按照我的...
  • shengtao96
  • shengtao96
  • 2016-04-24 19:36:51
  • 2843

扩展欧几里德算法解线性方程ax+by=c [模板]

扩展欧几里德算法 [模板]
  • SenyeLicone
  • SenyeLicone
  • 2016-07-13 20:02:33
  • 1805

bzoj [Noi2002]Savage 扩展欧几里得

枚举m,n^2判断 对于野人i,j,(H[i]+x*S[i])%m==(H[j]+x*S[j])%m,且x 化简得:(S[i]-S[j])*x+y*m=C[j]-C[i],扩欧解x最小值,判断 ...
  • Ren_Ivan
  • Ren_Ivan
  • 2017-08-12 16:22:02
  • 121

扩展欧几里得入门必看

首先、扩展欧几里得定理:对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b); 实现如下: int gcd(int a,int b) { int t,d; ...
  • YHYYXT
  • YHYYXT
  • 2015-04-21 23:12:49
  • 1195

扩展欧几里得各类问题模板

扩展欧几里得各类问题模板   昨天看了一下扩展欧几里得,今天找了几个模板 1.欧几里得(最大公约数,最小公倍数) int gcd(int a,int b) { if((b==0) re...
  • ky961221
  • ky961221
  • 2016-08-25 09:51:26
  • 547

数论扩展欧几里德基础习题(4.15)

题目: 题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。 输入 输入只有一行,包含两个正整数 a, b,用一个空格隔开。 输出 输出只有一行,包含一个正整数 x0,...
  • qq_30241305
  • qq_30241305
  • 2016-04-15 14:27:20
  • 441

扩展欧几里得 解方程小记

本来以前学习的时候就懵懵懂懂,长时间不用就完全不会了。。 首先对于扩展欧几里得,对于最一般的方程形式 ax+by=gcd(a,b),此方程一定有整数解,扩展欧几里便得能够求出其中的一组整数解x0,...
  • Bamb00D
  • Bamb00D
  • 2015-10-15 15:27:53
  • 792
收藏助手
不良信息举报
您举报文章:扩展欧几里得整理-1
举报原因:
原因补充:

(最多只允许输入30个字)