| ||||||||||
| 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:tide713 at 2004-12-03 12:58:43 > #include<stdio.h>
> #include<iostream.h>
> #include<math.h>
> int euclid(int a,int b)
> {
> if (b==0) return a;
> else return(euclid(b,a%b));
> }
> int ext_euclid(int a,int b,int &x,int &y)
> {
> int t,d;
> if (b==0) {x=1;y=0;return a;}
> d=ext_euclid(b,a %b,x,y);
> t=x;
> x=y;
> y=t-a/b*y;
> return d;
> }
> void modular_linear_equation_solver(int a,int b,int n)
> {
> int e,i,d;
> int x,y;
> int min,k;
> d=ext_euclid(a,n,x,y);
> if (b%d>0) cout <<"FOREVER\n";
> else
> { min=0xfffffff;
> e=(x*(b/d))%n;
> for (i=0;i<d;i++)
> { k=((e+i*(n/d))%n);
> if (k>=0&&k<min)
> min=k;
>
> }
> cout <<min<<'\n';
> }
> }
> int main()
> { int a,b,c,d,i,m;
> while(1)
> {
> cin>>a>>b>>c>>d;
> if(a==0&&b==0&&c==0&&d==0)
> break;
> m=1;
> if(d==0)
> m=1;
> else
> for(i=1;i<=d;i++)
> m*=2;
> modular_linear_equation_solver(c,b-a,m);
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator