// https://en.wikipedia.org/wiki/Exponentiation_by_squaring
public class BinaryExponentiation {

	public static int pow(int x, int n, int mod) {
		int res = 1;
		for (long p = x; n > 0; n >>= 1, p = (p * p) % mod) {
			if ((n & 1) != 0) {
				res = (int) (res * p % mod);
			}
		}
		return res;
	}

	// usage example
	public static void main(String[] args) {
		System.out.println(8 == pow(2, 3, 100));
	}
}
