Returns g^k mod n.
int expMod(int g, int k, int n) { int y = 1; while (k > 0) { if (k & 0x1 != 0) { y = (y * g) % n; } k >>>= 1; g = (g * g) % n; } return y; }