@zhangche0526
2017-02-25T06:36:00.000000Z
字数 610
阅读 1016
int gcd(int a, int b){ return a == 0 ? b : gcd(b % a, a); }
ll exgcd(ll a, ll b)
{
if(b == 0)
{
x = 1, y = 0;
return a;
}
else
{
ll ans = exgcd(b, a%b);
ll tmp = x;
x = y;
y = tmp - (a / b) * x;
return ans;
}
}
--
Noip2012提高组复赛Day2T1
描述
求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解。
格式
输入格式
输入只有一行,包含两个正整数a, b,用一个空格隔开。
输出格式
输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。
样例1
样例输入1
3 10
样例输出1
7
超裸的题,直接上拓展欧几里得
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
int x, y;
ll exgcd(ll a, ll b)
{
if(b == 0)
{
x = 1, y = 0;
return a;
}
else
{
ll ans = exgcd(b, a%b);
ll tmp = x;
x = y;
y = tmp - (a / b) * x;
return ans;
}
}
int main()
{
ll a,b;
cin>>a>>b;
exgcd(a, b);
x = (x + b) % b;//防止出现负数
cout<<x;
return 0;
}