| ||||||||||
| 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 | |||||||||
Re:大家看看到底哪里错了的嘛 运行没错啊In Reply To:大家看看到底哪里错了的嘛 运行没错啊 Posted by:mogen at 2010-04-10 10:49:44 > #include<iostream>
> using namespace std;
> class ModularLinearSolver//这个类解线性同余方程
> {
> private:
> long x,y,m,n,l;
> public:
> long ext_euclid(long a,long b,long &x,long &y);
> void modularSolver(long a, long b, long n);
> long mod(long a,long b);
> };
>
> /********************************************
>
> 求解模线性方程 ax=b (mod n) ,n>0
>
> *********************************************/
> void ModularLinearSolver::modularSolver(long a, long b, long n)
> {
> long e,i,d;
> long x,y;
> d = ext_euclid(a, n, x, y);
> if (b%d==0)
> {
> e=(x*(b/d))%n;
> cout<<mod(x*(b/d),n/d)<<endl;
> }
> else
> {
> cout<<"Impossible"<<endl;
> }
> }
> /*********************************************
>
> 扩展欧几里德算法求gcd(a,b)=ax+by
>
> *********************************************/
> long ModularLinearSolver::ext_euclid(long a,long b,long &x,long &y)
> {
> long 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;
> }
> long ModularLinearSolver::mod(long a,long b)
> {
> if(a >= 0)
> return a % b;
> else
> return a % b + b;
> }
> int main()
> {
> long x,y,m,n,l;
> ModularLinearSolver solver;
> cin>>x>>y>>m>>n>>l;
> solver.modularSolver(n-m,x-y,l);
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator