mirror of
https://github.com/Hizenberg469/Algorithms-snippets.git
synced 2026-04-19 22:52:23 +03:00
Graph, Number Theory, String Hashing Algo added
This commit is contained in:
9
Number Theory/Fast_Multiply.cpp
Normal file
9
Number Theory/Fast_Multiply.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
int fast_multiply(int a,int b,int c){
|
||||
int res=0;
|
||||
while(b){
|
||||
if(b&1)res+=a,res%=c;
|
||||
a+=a,a%=c;
|
||||
b>>=1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
12
Number Theory/extended_gcd_recursive.cpp
Normal file
12
Number Theory/extended_gcd_recursive.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
//Extended gcd -> Recursive
|
||||
|
||||
tuple<int,int,int> extended_gcd( int a, int b){
|
||||
|
||||
if( b == 0 ){
|
||||
return {1,0,a};
|
||||
}
|
||||
|
||||
int x,y,g;
|
||||
tie(x,y,g) = extended_gcd( b , a%b );
|
||||
return {y , x - (a/b)*y , g};
|
||||
}
|
||||
24
Number Theory/inverse_modulo_array.cpp
Normal file
24
Number Theory/inverse_modulo_array.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
vector<int> invs( vi& a , int m ){
|
||||
int n = (int)a.size();
|
||||
|
||||
if( n == 0 ) return {};
|
||||
|
||||
vector<int> b(n);
|
||||
|
||||
int v = 1;
|
||||
for(int i = 0 ; i < n ; i++ ){
|
||||
b[i] = v;
|
||||
v = ((long long)v * a[i] ) % m;
|
||||
}
|
||||
|
||||
int x = power( v , m - 2 , m ) ;
|
||||
|
||||
x = (x % m + m ) % m;
|
||||
|
||||
for(int i = n - 1 ; i >= 0 ; i-- ){
|
||||
b[i] = x * b[i] %m;
|
||||
x = x * a[i] % m;
|
||||
}
|
||||
|
||||
return b;
|
||||
}
|
||||
4
Number Theory/modAdd.cpp
Normal file
4
Number Theory/modAdd.cpp
Normal file
@@ -0,0 +1,4 @@
|
||||
template<typename T>
|
||||
T modAdd(T a,T b,T M=(T)1e9+7){
|
||||
return ((M+a%M)%M+(M+b%M)%M)%M;
|
||||
}
|
||||
4
Number Theory/modMul.cpp
Normal file
4
Number Theory/modMul.cpp
Normal file
@@ -0,0 +1,4 @@
|
||||
template<typename T>
|
||||
T modMul(T a,T b,T M=(int)1e9+7){
|
||||
return ((a%M)*(b%M))%M;
|
||||
}
|
||||
4
Number Theory/modSub.cpp
Normal file
4
Number Theory/modSub.cpp
Normal file
@@ -0,0 +1,4 @@
|
||||
template<typename T>
|
||||
T modSub(T a,T b,T M=(T)1e9+7){
|
||||
return (M+((M+a%M)%M-(M+b%M)%M))%M;
|
||||
}
|
||||
Reference in New Issue
Block a user