1. 程式人生 > >[模板] exgcd模板解不定方程

[模板] exgcd模板解不定方程

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int,int> pii;
#define mem(s,t) memset(s,t,sizeof(s))
#define D(v) cout<<#v<<" "<<v<<endl
#define inf 0x3f3f3f3f
#define pb push_back

//#define LOCAL
const int mod=1e9+7;
const int MAXN =2e5
+10; int gcd(int a,int b){return b?gcd(b,a%b):a;} int exgcd(int &x,int &y,int a,int b){ if(!b){ x=1;y=0; return a; } int r=exgcd(x,y,b,a%b); int t=x; x=y; y=t-a/b*y; return r; } bool line_equation(int &x,int &y,int a,int b,int c){//不定方程 ax+by=c 的一組解
int d=exgcd(x,y,a,b); if(c%d) return false; int k=c/d; x*=k; y*=k; return true; } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int x,y,a=3,b=4,c=5; if(line_equation(x,y,a,b,c)){ cout<<x<<y<<endl; } }

另外 根據神奇的拉梅定理(看不懂) gcd的複雜度是 logn的 所以沒有必要去糾結遞迴複雜度,幾乎可以忽略。
通解求法:
p * a+q * b = c的其他整數解滿足:

p = p1 + b/Gcd(a, b) * t
q = q1 - a/Gcd(a, b) * t(其中t為任意整數)
p 、q就是p * a+q * b = c的所有整數解。

相關推薦

[模板] exgcd模板不定方程

#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <int,int>

不定方程(從HDU1356說起)

傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=1356 由題意,就是要解一個不定方程ax+by=d,要求(abs(x)+abs(y))最小。 一.exgcd 先從exgcd說起。由裴蜀定理可知,ax+by=gcd(a,b)必定存在整數

caioj 1153 擴充套件歐幾里德演算法(不定方程

模板題 注意exgcd函式要稍微記一下 #include<cstdio> #include<cctype> #include<algorithm> #define

gcd歐幾里德演算法/extgcd擴充套件歐幾里德演算法以及在不定方程中的應用

這個應該是我在noip前就應該會的東西 ,但是當時也許只是記下了程式碼吧 ,現在有諸多的不理解。後來藉著書和幾篇部落格弄懂了並小證了一下,鑑於網上有些部落格關於這個的寫的真的不好看,所以自己來總結一下,順帶以後也能看。 順帶一提,gcd(a,b)表示a,b的最

hdu2669 擴充套件歐幾里德 二元一次不定方程

題意: 給出兩個非負整數a,b 求x,y 使ax+by=1,而且x非負並最小的答案 題解: 樸素的歐幾里德原理: gcd(a,b)=gcd(b,a mod b) 擴充套件歐幾里德定理:  對於不完全為 0 的非負整數 a,b,gcd(a,b)表示 a,b的最大公約數,

POJ 1061 擴充套件歐幾里得演算法不定方程

貼一個題目地址吧:http://poj.org/problem?id=1061 (下文對擴充套件歐幾里得演算法的論述基本取決於所打的程式碼模板,故不準確) 抽象題意。設青蛙跳過的圈數為K,青蛙跳的次數為T。 根據題意有X+MT ≡ Y+NT(mod L)==> LK

hdu-2142(擴充套件歐幾里得不定方程)

 DescriptionMs. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of medicine. For example, to measure 200mg of aspirin usi

數論讀書筆記——線性丟番圖方程——不定方程

線性丟番圖方程: 背景:當我們需要求解特定方程的整數解的時候,那麼就得到了一個丟番圖方程,這些方程是根據丟番圖(diophantus)命名的。他寫下了一些方程並將解限定在有理數域上。方程ax+by=c上的格點。第一個解是由婆羅摩笈多(brahmagupta)給出的 定理1:

POJ 3164 Command Network(最小樹形圖模板題+詳

noop clu html 建立 eof std const temp pri http://poj.org/problem?id=3164 題意: 求最小樹形圖。 思路: 套模板。 引用一下來自大神博客的講解:http://www.cnblogs.co

flask中jinjia2模板使用詳2

編程語言 Python 接上文註釋的使用 在jinjia2模板中,使用{# #}進行代碼註釋,如下所示 運行後發現,註釋不會被render出來 去掉空行 兩種方法可以去掉jinjia2模板中的空白行,一是設置jinjia2的環境變量,如下app.jinja_env.trim_blocks =

T4模板簡單了

manager header sync transform format provider lan 表達式 項目 T4模板基礎 T4即為Text Template Transformation Toolkit,一種可以由自己去自定義規則的代碼生成器。根據業務模型可生成任何

django模板templates詳(二)

auth authent conf 轉換 decorator 連接 關系 ons VC 1 總體結構 ? Django是MTV結構,即:Model, Template, View Model:定義數據的存儲格式,並且提供了數據庫訪問的API。 View:定義那些數據被顯示,

logback日誌模板與詳

alua ogg back pad 修飾 可選 最小寬度 {0} method <pattern>的轉換符說明: (這部分引用自http://aub.iteye.com/blog/1103685)轉換符 作用 c {length } lo {len

bzoj 1477 青蛙的約會(exgcd模板

exgcd裸題。 兩個人之間有一個距離,兩人有一個速度差,設這個距離為c,速度差為a。而需要的次數就是x 那麼題意就是,這樣就是exgcd的標準形式啦。 至於距離和速度差一定要記得是追及問題,如果距離為a-b,那麼速度就是b的減a的,如果為負,就取模加模再取模,變為正的 含義上就

自動化監控--zabbix中的template(模板)詳

模板概述 模板是可以方便地應用於多個主機的一組實體。而這些實體包括:items(監控項)、triggers(觸發器),graphs(圖形)、applications(應用)、screens (聚合圖形(自Zabbix 2.0起))、low-level discovery rules

深入淺出學演算法006-求不定方程的所有

4005: 深入淺出學演算法006-求不定方程的所有解 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 5139 Solved: 2159 Description 現有一方程ax+by=c,其中係數a、b、c均為整數,求符合條件的所有正整數解,要求

C++學習之路(47)---C++類模板模板類深入詳

1、在c++的Template中很多地方都用到了typename與class這兩個關鍵字,而且有時候二者可以替換,那麼是不是這兩個關鍵字完全一樣呢? 事實上class用於定義類,在模板引入c++後,最初定義模板的方法為:template<class T>,這裡cl

c++模板學習-類模板模板類詳-2

c++模板學習 https://blog.csdn.net/u010029439/article/details/84977348   資料來源: https://www.cnblogs.com/cxq0017/p/6076856.html   在C++的

不定方程的所有

#include<stdio.h> int main() { int n,m,t; int a,b,c; int i,j; while(scanf("%d",&t)!=EOF) { while(t--) {

Django模板語言詳

本節將介紹Django模版系統的語法。Django模版語言致力於在效能和簡單性上取得平衡。 如果你有過其它程式設計背景,或者使用過一些在HTML中直接混入程式程式碼的語言,那麼你需要記住,Django的模版系統並不是簡單的將Python嵌入到HTML中。 一、模板 模版是純文字檔案,可以生成任何基於文字