您的位置:首页 > 其它

hdu 1576 求解模线性方程

2012-07-27 23:30 239 查看
题意:

已知 gcd(B, mod)=1, A%B==0,A/B *B=n(mod mod);

给出B,n;求 A/B= ans (mod mod)中的ans

题解:

求解模线性方程

先求A/B,令A/B=x

则有B*x=n(mod mod),可想到扩展欧几里德

求出x,因为这里的x是B*x=1(mod 9973)的解,x之后还要乘n

代码如下:

#include<iostream>
#include<cstdio>

using namespace std;

const int mod=9973;

__int64 a,b,c,d,x,y;
__int64 exgcd(__int64 a,__int64 b)
{
if(b==0)
{
x=1;y=0;
return a;
}
d=exgcd(b,a%b);
__int64 xx=y,yy=x-a/b*y;
x=xx;y=yy;
return d;
}

int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
__int64 B,n;
scanf("%I64d%I64d",&n,&B);
d=exgcd(B,mod);
x*=n;
printf("%d\n",(x%mod+mod)%mod);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: