vijos P1781同余方程

来源:互联网 发布:外贸帮手网海关数据 编辑:程序博客网 时间:2024/05/16 19:30

描述

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

格式

输入格式

输入只有一行,包含两个正整数a, b,用一个空格隔开。

输出格式

输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。

样例1

样例输入1[复制]

3 10

样例输出1[复制]

7

限制

每个测试点1s

提示

对于40%的数据,2 ≤b≤ 1,000; 
对于60%的数据,2 ≤b≤ 50,000,000; 
对于100%的数据,2 ≤a, b≤ 2,000,000,000。

来源

Noip2012提高组复赛Day2T1

题解

裸的拓展欧几里得。

#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<cmath>#include<algorithm>#define ll long longusing namespace std;ll a,b,x,y;void exgcd(ll aa,ll bb){if(bb==0) {x=1; y=0; return;}else   {exgcd(bb,aa%bb);    ll t=x;x=y; y=t-aa/bb*y;   }}int main(){scanf("%lld%lld",&a,&b);exgcd(a,b);//因为和y无关,所以可以看成ax+by=1x=(x%b+b)%b;if(!x) x=x+b;printf("%lld\n",x);return 0;}

0 0