NOIP 2012 同余方程

来源:互联网 发布:郑州北环淘宝城在哪里 编辑:程序博客网 时间:2024/05/16 04:29

求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。


【分析】
扩展欧几里德算法求解
注意防止负数情况(最小正整数解)


【代码】

//NOIP 2012 同余方程 #include<iostream>#include<cstdio>#define fo(i,j,k) for(int i=j;i<=k;i++)using namespace std;void exgcd(int a,int b,int &x,int &y){    if(b==0)    {        x=1;y=0;        return;    }    exgcd(b,a%b,y,x);    y=y-(a/b)*x;}int main(){    int a,b,x,y;    scanf("%d%d",&a,&b);    exgcd(a,b,x,y);    x=(x%b+b)%b;    printf("%d\n",x);    return 0;}
1 0