x*a=1(mod n) , 转换成x*a + n * y = 1的形式,进行求解即可
// File Name: 1092.cpp // Author: bo_jwolf // Created Time: 2014年02月04日 星期二 15时30分26秒 #include<vector> #include<list> #include<map> #include<set> #include<deque> #include<stack> #include<bitset> #include<algorithm> #include<functional> #include<numeric> #include<utility> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> using namespace std; typedef long long LL; LL ex_gcd( LL a, LL b, LL &x, LL &y ){ if( b == 0 ){ x = 1; y = 0; return a; } else{ LL temp = ex_gcd( b, a % b, x, y ); LL t = x; x = y; y = t - ( a / b ) * y; return temp; } } int main(){ LL n, m, a, b, r, s, t, x, y; while( cin >> a >> n ){ if( !a && !n ) break; a = a, b = n; r = ex_gcd( a, b, x, y ); if( x < 0 ){ x += b; } //LL res = ( x * a ) % y; cout << x << endl; } return 0; }