code: def fast_exponentiation(a, b, q):
      
      assert a >= 0 and b >= 0 and q >= 1
      result = 1
      while b:
          if b % 2 == 1:
              result = (result * a) % q
          a = (a * a) % q
          b >>= 1
      return result
docs: Compute (a pow b) % q, alternative shorter implementation
  
      :param int a b: non negative
      :param int q: positive
      :complexity: O(log b)