| ||||||||||
| 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 | |||||||||
彻底int64就可In Reply To:help!!! Posted by:fdfzq at 2004-02-06 14:20:50 > #include<iostream.h>
> #include<iomanip.h>
> //x,y用于gcd函数满足:aa*x+nn*y==gcd(aa,nn)
> //gcd返回的值为answer即gcd(cc,dd)==answer
> //e为aa*x==bb(mod nn)的解
> long int x,y,e;
> long int gcd(long int aa,long int bb)
> {
> long int t;
> long int answer;
> if(bb==0)
> {
> answer=aa;
> x=1;
> y=0;
> }
> else
> {
> answer=gcd(bb,aa%bb);
> t=x;
> x=y;
> y=t-(aa/bb)*y;
> }
> return answer;
> }
> void tongyu(long int aa,long int bb,long int nn)
> {
> long int d,i,ee;
> d=gcd(aa,nn);
> if(bb%d>0)
> {
> e=-1;
> return;
> }
> else
> {
> e=(x*(bb/d))%nn;
> if(e<0)
> e=e+nn;
>
> }
> }
> int main()
> {long int x1,y1,x2,y2,m,n,l,b;
>
> cin>>x2>>y2>>m>>n>>l;
> cout << setprecision(0);
> cout << setiosflags(ios::fixed);
> x1=x2%l;
> y1=y2%l;
> if(m>=n)
> {
> if(y1>=x1)
> b=y1-x1;
> else
> b=y1-x1+l;
> tongyu(m-n,b,l);
> if(e==-1)
> {
> cout<<"Impossible"<<endl;
> }
> else
> {
> cout<<e<<endl;
> }
> }
> if(m<n)
> {
> if(x1>=y1)
> {
> b=x1-y1;
> }
> else
> b=x1-y1+l;
> tongyu(n-m,b,l);
> if(e==-1)
> {
> cout<<"Impossible"<<endl;
> }
> else
> {
> cout<<e<<endl;
> }
> }
>
> return 0;
> }
//彻底int64就可
#include <stdio.h>
#define int64 __int64
void ExtEuclid(int64 a,int64 b,int64& d,int64& x,int64& y)
{ int64 temp;
if (b==0)
{d=a; x=1; y=0;
return;
}
ExtEuclid(b,a%b,d,x,y);
temp=x-y*(a/b);
x=y; y=temp;
}
int main()
{int64 x,y,m,n,l,a,b,d,u,v,ans;
scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l);
a=(l+m-n)%l; b=(l+y-x)%l;
ExtEuclid(a,l,d,u,v);
if (b%d!=0)
printf("Impossible\n");
else
{ans=(u*(b/d)%l);
if (ans<0) ans+=l;
ans=ans%(l/d);
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