HDU1576 A/B(求逆元)

来源:互联网 发布:钢铁雄心4mac汉化包 编辑:程序博客网 时间:2024/06/06 01:11

对于正整数,如果有,那么把这个同余方程中的最小正整数解叫做的逆元。

逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为

推导过程如下

   

#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <cmath>#define LL long long using namespace std;const int m = 9973;long long pow_mod(long long a, long long b){long long res = 1;while(b){if(b & 1) res = res * a % m;a = a * a % m;b >>= 1;}return res;}int main(){int T;scanf("%d", &T);while(T--){long long a, b;scanf("%I64d%I64d", &a, &b);long long x = pow_mod(b, 9971);printf("%I64d\n", (a * x) % m);}return 0;}


0 0