参考自:博客
#include <map> #include <set> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <climits> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define ll long long using namespace std; ll x,y,m,n,l; void exgcd(ll a,ll b,ll &d,ll &x,ll &y) { if(!b) { d=a; x=1; y=0; } else { exgcd(b,a%b,d,y,x); y-=x*(a/b); } } int main() { while(cin>>x>>y>>m>>n>>l) { ll c,a,b; b=l; if(m==n) { puts("Impossible"); continue; } else { c=x-y; } a=n-m; if(a<0) { a*=-1; c*=-1; } ll gcd; ll xx,yy; exgcd(a,b,gcd,xx,yy); if(c%gcd) { puts("Impossible"); continue; } xx=xx*(c/gcd); ll t=b/gcd; if(xx>=0) xx%=t; else xx=xx%t+t; printf("%lld\n",xx); } }
青蛙的约会 拓展gcd
最新推荐文章于 2020-07-10 21:41:37 发布