Advertisement
Riz1Ahmed

PowerMode(a^n%M), GCD, LCM, LogInt

Jan 27th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.39 KB | None | 0 0
  1. /*****************
  2. Given a,n,M. Find a^n%M.
  3. ******************/
  4. #include<cstdio>
  5. #define ll long long int
  6. ll gcd(ll a,ll b) {return !(a%b)?b:gcd(b,a%b);}
  7. ll lcm(ll a,ll b) {return (a*b)/gcd(a,b);}
  8. ll gcdExtended(ll a, ll b, ll &x, ll &y){
  9.     if (!a){x=0, y=1; return b;}
  10.     ll x1, y1;
  11.     ll gcd = gcdExtended(b%a, a, x1, y1);
  12.     x = y1-(b/a)*x1;
  13.     y = x1;
  14.     return gcd;
  15. }
  16. ll PowerMod(ll a,ll n,ll M){
  17.     if (!n) return 1;
  18.     ll x=PowerMod(a,n/2,M);
  19.     x=(x*x)%M;
  20.     return (n&1)? (x*a)%M : x;
  21. }
  22. ll LogInt(ll n,ll base){
  23.     ll p=1,i;
  24.     for(i=1;; i++,p*=base)
  25.         if (p*base>n) break;
  26.     return i-1;
  27. }
  28. int main(){
  29.     ll a,n,M=1e9+7;
  30.     scanf("%lld %lld",&a,&n);
  31.     printf("%lld\n",PowerMode(a,n,M);
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement