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 |
我用欧几里有点疑问,请高手帮忙看看In Reply To:你们用的是欧几里的吧?? Posted by:houxuanfelix at 2006-07-31 19:22:52 我用的欧几里德解同余模算术方法,和通过的程序对比过,答案一样,速度快,但始终无法AC,哪位高手能指点一下: #include <stdio.h> __int64 x=0,y=0; __int64 extended_gcd(__int64 a,__int64 b) { __int64 t,v; if(b==0) { v=a; x=1; y=0; } else { v=extended_gcd(b,a%b); t=x; x=y; y=t-(a/b)*y; } return v; } __int64 modular(__int64 a,__int64 b,__int64 n) { __int64 d,e; d=extended_gcd(a,n); if(b%d!=0) return -1; e=x*(b/d)%n; return e; } int main() { __int64 a,b,x1,y1,n; scanf("%I64d%I64d%I64d%I64d%I64d",&a,&b,&x1,&y1,&n); if(y1-x1>0) a=modular(y1-x1,(a-b)>0?(a-b):(a-b+n),n); else a=modular(x1-y1,(b-a)>0?(b-a):(b-a+n),n); if(a!=-1){ if(a>=0) printf("%I64d\n",a); else printf("%I64d\n",a+n); } else printf("Impossible\n"); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator