Luogu P1082 同余方程 拓展欧几里得

模板

注意exgcd中把y当作x丢下去后y = x',x = y',所以y = x'-a/b*y' = y-a/b*x   !

 1 #include<iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 void exgcd(ll a,ll b,ll& d,ll& x,ll& y){
 6     if(!b){x = 1,y = 0,d = a;return;}
 7     exgcd(b,a%b,d,y,x);y -= a/b*x;
 8 }
 9 
10 ll a,b,d,x,y;
11 
12 int main(){
13     cin >> a >> b;
14     exgcd(a,b,d,x,y);
15     cout << (x%(b/d)+b/d)%(b/d);
16 return 0;
17 }

猜你喜欢

转载自www.cnblogs.com/Wangsheng5/p/11782855.html