From 8fcec286d5e118885749c3d5a4fef821b62a4a5e Mon Sep 17 00:00:00 2001 From: Hizenberg Date: Sat, 20 Apr 2024 17:54:45 +0530 Subject: [PATCH] Catalan formula and nCr --- Number Theory/Catalan_number.cpp | 2 +- Number Theory/Catalan_number.exe | Bin 0 -> 82605 bytes Number Theory/Catalan_number_formula.cpp | 69 +++++++++++++++++++++++ Number Theory/nCr_formula.cpp | 56 ++++++++++++++++++ 4 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 Number Theory/Catalan_number.exe create mode 100644 Number Theory/Catalan_number_formula.cpp create mode 100644 Number Theory/nCr_formula.cpp diff --git a/Number Theory/Catalan_number.cpp b/Number Theory/Catalan_number.cpp index 85d50b7..514d26f 100644 --- a/Number Theory/Catalan_number.cpp +++ b/Number Theory/Catalan_number.cpp @@ -27,6 +27,6 @@ int catalanNumber( int n ){ int main(int argc, char* argv[] ){ - cout << catalanNumber(3) << '\n'; + cout << catalanNumber(2) << '\n'; return 0; } \ No newline at end of file diff --git a/Number Theory/Catalan_number.exe b/Number Theory/Catalan_number.exe new file mode 100644 index 0000000000000000000000000000000000000000..95d821c90a84fee30f00d0f0e3f79278fe523847 GIT binary patch literal 82605 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 z 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 literal 0 HcmV?d00001 diff --git a/Number Theory/Catalan_number_formula.cpp b/Number Theory/Catalan_number_formula.cpp new file mode 100644 index 0000000..cbffb76 --- /dev/null +++ b/Number Theory/Catalan_number_formula.cpp @@ -0,0 +1,69 @@ +typedef long long int ll; + +ll mod = 998244353; + +vector factorial; +void calculateFactorial(ll n){ + factorial.resize(n+1); + + factorial[0] = factorial[1] = 1; + + for( ll i = 2 ; i <= n ; i++ ){ + factorial[i] = ( factorial[i-1] * i ) % mod; + } +} + +template +T modMul(T a,T b,T M=(ll)1e9+7){ + return ((a%M)*(b%M))%M; +} + +template +inline T power(T a, T b, T M) +{ + T x = 1; + while (b) + { + if (b & 1) x = modMul(x,a,M); + a = modMul(a,a,M); + b >>= 1; + } + return x; +} + +/* Using Fermat little Theorem */ +ll inverse(ll n ){ + return power( n , mod - 2 , mod ); +} + +vector inverse_factorial; +void calculateInverseFactorial(ll n){ + + inverse_factorial.resize(n+1); + inverse_factorial[0] = inverse_factorial[1] = 1; + + for( ll i = 2 ; i <= n ; i++ ){ + inverse_factorial[i] = (inverse(i)*inverse_factorial[i-1])%mod; + } +} + +ll nCr( ll n , ll r ){ + + // -- n! -- + // | ------------- | % mod + // -- n! * (n - r)! -- + + return ( ( ( factorial[n] * inverse_factorial[r] ) % mod + ) * inverse_factorial[n-r] ) % mod; +} + +/* Catalan Number */ +ll Cn( ll n ){ + + // -- 2n! -- + // | --------------- | % mod + // -- n! * n! * (n+1) -- + + return ( ( ( ( ( factorial[2*n] * inverse_factorial[n] ) % mod ) + * inverse_factorial[n] ) % mod ) * inverse( n + 1 ) ) % mod; +} \ No newline at end of file diff --git a/Number Theory/nCr_formula.cpp b/Number Theory/nCr_formula.cpp new file mode 100644 index 0000000..b5fb9ed --- /dev/null +++ b/Number Theory/nCr_formula.cpp @@ -0,0 +1,56 @@ +ll mod = 998244353; + +vector factorial; +void calculateFactorial(ll n){ + factorial.resize(n+1); + + factorial[0] = factorial[1] = 1; + + for( ll i = 2 ; i <= n ; i++ ){ + factorial[i] = ( factorial[i-1] * i ) % mod; + } +} + +template +T modMul(T a,T b,T M=(ll)1e9+7){ + return ((a%M)*(b%M))%M; +} + +template +inline T power(T a, T b, T M) +{ + T x = 1; + while (b) + { + if (b & 1) x = modMul(x,a,M); + a = modMul(a,a,M); + b >>= 1; + } + return x; +} + +/* Using Fermat little Theorem */ +ll inverse(ll n ){ + return power( n , mod - 2 , mod ); +} + +vector inverse_factorial; +void calculateInverseFactorial(ll n){ + + inverse_factorial.resize(n+1); + inverse_factorial[0] = inverse_factorial[1] = 1; + + for( ll i = 2 ; i <= n ; i++ ){ + inverse_factorial[i] = (inverse(i)*inverse_factorial[i-1])%mod; + } +} + +ll nCr( ll n , ll r ){ + + // -- n! -- + // | ------------- | % mod + // -- n! * (n - r)! -- + + return ( ( ( factorial[n] * inverse_factorial[r] ) % mod + ) * inverse_factorial[n-r] ) % mod; +} \ No newline at end of file