#include <vector>
#include <string>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <climits>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=2005;
int a[N],b[N];
char s[N][N];
ll gcd(ll a,ll b)
{
if(b==0)
{
return a;
}
return gcd(b,a%b);
}
void exd(ll a,ll b,ll &x,ll &y)
{
if(b==0)
{
x=1;
y=0;
return ;
}
exd(b,a%b,x,y);
ll t=x;
x=y;
y=t-a/b*y;
}
int main()
{
ll x,y,n,m,k,l;
while(~scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l))
{
ll j1=0,j2=0;
ll a=n-m;
ll b=l;
ll c=x-y;
ll r=gcd(a,b);
if(c%r)
{
printf("Impossible\n");
continue;
}
a/=r;
b/=r;
c/=r;
exd(a,b,j1,j2);
j1=c*j1-c*j1/b*b;
if(j1<0)
{
if(b>0)
j1+=b;
}
printf("%lld\n",j1);
}
return 0;
}
POJ 1061-青蛙的约会(扩展欧几里得)
最新推荐文章于 2018-02-10 16:54:20 发布