标签:思想 stream 就是 math 题解 数据 def badge fine
求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入格式:
输入只有一行,包含两个正整数 a, b,用一个空格隔开。
输出格式:
输出只有一行,包含一个正整数 x0,即最小正整数解。输入数据保证一定有解。
【数据范围】
对于 40%的数据,2 ≤b≤ 1,000;
对于 60%的数据,2 ≤b≤ 50,000,000;
对于 100%的数据,2 ≤a, b≤ 2,000,000,000。
NOIP 2012 提高组 第二天 第一题
题解
顺便把欧几里得算法也写上了
证明:
其实欧几里得算法就是辗转相除法。。。
扩展欧几里得就是
代码
//by 减维 #include<cstdio> #include<iostream> #include<cstring> #include<queue> #include<cstdlib> #include<ctime> #include<cmath> #include<map> #include<bitset> #include<algorithm> #define ll long long #define maxn using namespace std; ll n,m; ll gcd(ll x,ll y) { return y?gcd(y,x%y):x; } ll exgcd(ll a,ll b,ll &x,ll&y) { if(b==0){ x=1,y=0; return a; } ll q=exgcd(b,a%b,y,x); y-=a/b*x; return q; } int main() { scanf("%lld%lld",&n,&m); ll z=gcd(n,m); n/=z,m/=z; ll x,y; ll asd=exgcd(n,m,x,y); printf("%lld",(x+m)%m); }
标签:思想 stream 就是 math 题解 数据 def badge fine
原文地址:http://www.cnblogs.com/rir1715/p/7745110.html