您的位置:首页 > 其它

一元线性同余方程的概述

2017-03-09 19:52 197 查看
 

一元线性同余方程的所有解



求线性同余方程的所有解,下面给出代码如下

long long exgcd(long long a,long long b,long long &x,long long &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
long long ans=exgcd(b,a%b,x,y);///使ax+by=gcd(a,b)成立的一组解
long long temp=x;
x=y;
y=temp-a/b*y;
return ans;/// 返回a,b的最大公因数
}
int f(int a,int b,int m)
{
long long g=exgcd(a,m,x,y);///ax与b模m同余
if(b%d!=0)
return -1;
x=x*(b/g)%m;
for(int i=1;i<=g;i++)
ans[i]=(x+(i-1)*m/g)%m;
}

解一元线性同余方程组



 


下面给出求出此方程组小于m的非负整数解的代码

long long exgcd(long long a,long b,long long x,long long y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
long long ans=exgcd(b,a%b,x,y);
long long temp=x;
x=y;
y=temp-a/b*y;
return ans;
}
int solve()
{
scanf("%lld%lld",&a1,&r1);
for(int i=1;i<n;i++)///总共有n个方程
{
scanf("%lld%lld",&a2,&r2);
a=a1,b=a2,c=r2-r1;
long long g=exgcd(a,b,x0,y0);
if(c%g!=0)
{
ifhave=0;
}
int t=b/g;
x0=(x0*(c/g)%t+t)%t;
r1=a1*x0+r1;
a1=a1*(a2/g);
}
if(ifhave==0)
{
r1=-1;
}
return r1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: