Graph, Number Theory, String Hashing Algo added

This commit is contained in:
2023-11-12 19:31:52 +05:30
parent 1abfa41674
commit 6d69543289
10 changed files with 237 additions and 0 deletions

View 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;
}

View 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};
}

View 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
View 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
View 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
View 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;
}