bzoj1477(扩欧)

来源:互联网 发布:青岛数据挖掘面试 编辑:程序博客网 时间:2024/05/16 11:40

青蛙的约会

#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;ll x,y,n,m,len;void exgcd(ll a,ll b,ll &d,ll &x,ll &y){if (b==0) {d=a;x=1;y=0;return ;}exgcd(b,a%b,d,y,x);y-=x*(a/b);}ll work(ll a,ll b,ll c){ll x,y,d;exgcd(a,b,d,x,y);if (c%d) return -1;x=x*(c/d);ll k=b/d;return ((x%k)+k)%k;}int main(){scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&len);if (m<n)swap(n,m),swap(x,y);//更新,需要保证m-n是大于0的,负数,取模时会出问题。。。ll ans=work(m-n,len,y-x);//不知道为什么把n和m反过来,把x和y反过来,输出的结果就不对。。if (ans==-1) printf("Impossible");else printf("%lld",ans);return 0;}


0 0