| ||||||||||
| 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 | |||||||||
大家看看到底哪里错了的嘛 运行没错啊#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