| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大牛们帮忙看看我这怎么错的吧!#include <stdio.h>
__int64 e_gcd(__int64 a, __int64 b, __int64 *x, __int64 *y)
{
__int64 x1, y1, p;
if (b == 0)
{
*x = 1;
*y = 0;
return a;
}
p = e_gcd(b, a % b, &x1, &y1);
*x = y1;
*y = x1 - (a / b) * y1;
return p;
}
__int64 abs(__int64 a)
{
return (a > 0) ? a : -a;
}
int main()
{
__int64 x, y, m, n, L;
__int64 a, b, t, r, gcdans, lcmans, ans;
while (scanf("%I64d %I64d %I64d %I64d %I64d", &x, &y, &m, &n, &L) != -1)
{
x %= L;
y %= L;
m %= L;
n %= L;
if (x > y)
{
a = x - y;
b = (n - m + L) % L;
}
else
{
a = y - x;
b = (m - n + L) % L;
}
gcdans = e_gcd(a, L, &t, &r);
lcmans = a / gcdans * L;
if (b % gcdans != 0)
{
printf("Impossible\n");
}
else
{
ans = (b / gcdans * t + lcmans) % lcmans;
printf("%I64d\n", ans);
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator