数论笔记--阶乘求逆元
### 阶乘求逆元模板
#include <bits/stdc++.h> using namespace std; void ExPower( int b, int p, int & a, int & k ) { if( p == 0 ) { a = 1; k = 0; return; } ExPower( p, b % p, k, a ); k -= b / p * a; return; } int main() { int b, p; cin >> b >> p; int a, k; ExPower( b, p, a, k ); if( a < 0 ) a += p; cout << a << endl; return 0; }
int inv( int b, int p ) { int a, k; exPower( b, p, a, k ); if( a < 0 ) a += p; return a; } void init( int n ) { Fact[ 0 ] = 1; for( int i = 1; i <= n; ++i ) Fact[ i ] = Fact[ i - 1 ] * i % Mod; INV[ n ] = inv( Fact[ n ], Mod ); for( int i = n - 1; i >= 0; --i ) INV[ i ] = INV[ i + 1 ] * ( i + 1 ) % Mod; return; }
Inv[ 1 ] = 1; for( int i = 2; i <= n; i++ ) Inv[ i ] = ( p - p / i ) * Inv[ p % i ] % p;

浙公网安备 33010602011771号