码迷,mamicode.com
首页 > 其他好文 > 详细

不定方程与扩展欧几里得

时间:2019-03-10 11:08:47      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:lld   代码   左右   return   str   时间   print   扩展   def   

时间不多了,先把代码放上来。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 
 5 using namespace std;
 6 
 7 typedef long long ll;
 8 
 9 ll gcd(ll a, ll b)
10 {
11     return (b == 0)?a:(gcd(b, a%b));
12  } 
13 
14 ll exgcd(ll a, ll b, ll &x, ll &y)
15 {
16     if(b == 0){
17         x = 1; y = 0;
18         return a;
19     }
20     ll t = exgcd(b, a%b, y, x);
21     y -= (a/b)*x;
22     
23     return t;
24  } 
25 
26 int main()
27 {
28     ll x, y;
29     ll a, b, m;
30     cin>>a>>b>>m;
31     // 有解的充要条件 
32     if(m%gcd(a, b) == 0) cout<<"Yes\n"; 
33     ll s = exgcd(a, b, x, y);
34     x = x*m/s;
35     y = y*m/s;
36     for(int t = -100;t<=300;t++){
37         printf("%lld*(%lld) + %lld*(%lld) = %lld\n", a, x, b, y, m);
38         /*
39         x -= b/s;
40         y += a/s;
41         */
42         // 通解, 可往左右走 
43         x -= b/s;
44         y += a/s;
45     }
46     
47     return 0;
48 }

 

不定方程与扩展欧几里得

标签:lld   代码   左右   return   str   时间   print   扩展   def   

原文地址:https://www.cnblogs.com/mabeyTang/p/10504603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!