#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define INF 0x3f3f3f3f
#define rep0(i, n) for (int i = 0; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define rep_0(i, n) for (int i = n - 1; i >= 0; i--)
#define rep_1(i, n) for (int i = n; i > 0; i--)
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
#define mem(x, y) memset(x, y, sizeof(x))
/**
(m - n) * ans = (y - x) % L (mod L)
HINT:
m - n, y - x 可能为负
*/
using namespace std;
typedef long long LL;
LL exgcd(LL a, LL b, LL &x, LL &y)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
LL r = exgcd(b, a % b, x, y);
LL temp = x;
x = y;
y = temp - a / b * y;
return r;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE
LL x, y, m, n, l, a, b, ans, ans1, k;
scanf("%lld %lld %lld %lld %lld", &x, &y, &m, &n, &l);
a = ((m - n) % l + l) % l;
b = l;
k = ((y - x) % l + l) % l;
LL g = exgcd(a, b, ans, ans1);
if (k % g == 0)
{
LL temp = k / g;
ans = (ans * temp % l + l) % l;
printf("%lld\n", ans);
}
else
printf("Impossible\n");
return 0;
}
poj1061_青蛙的约会(扩展欧几里得/naked)
最新推荐文章于 2022-04-14 00:39:57 发布