您的位置:首页 > 其它

poj1061 2010.2.17

2016-02-05 14:23 302 查看
poj1061 2010.2.17

#include <iostream>
using namespace std;
__int64 x,y,m,n,l;
__int64 modularLinearEquation(__int64 a,__int64 b,__int64 n);
__int64 extEuclid(__int64 a, __int64 b);
int main(void)
{
__int64 s;
scanf("%I64d",&x);
scanf("%I64d",&y);
scanf("%I64d",&m);
scanf("%I64d",&n);
scanf("%I64d",&l);
s=modularLinearEquation((n-m+l)%l,(x-y+l)%l,l);
if (s<0)
printf("Impossible\n");
else
printf("%I64d\n",s);
return 0;
}
__int64 modularLinearEquation(__int64 a,__int64 b,__int64 n)
{
__int64 d,result;
result=-1;
d=extEuclid(a,n);
if (b%d!=0) return result;
x=x*(b/d);
x=(x%(n/d)+n/d)%(n/d);
result=x;
return result;
}
__int64 extEuclid(__int64 a, __int64 b)
{
__int64 r,t;
if (b==0)
{
x=1;
y=0;
return a;
}
r=extEuclid(b,a%b);
t=x;
x=y;
y=t-a/b*y;
return r;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: