@zhangche0526
2017-02-25T06:36:00.000000Z
字数 610
阅读 1112
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;}