I am given the number 3 and a variable \'n\', that can be as high as 1 000 000 000 (a billion). I have to print the answer of 3^n modulo 100003
. I tried the followi
This is to augment Kaidul's answer.
100003
is a prime number, which immediately casts in the Fermat's Little Theorem: any number raised to a prime power is congruent to itself modulo that prime. It means that you don't need to raise to n
'th power. A n % 100002
power suffices.
Edit: example.
Say, n
is 200008, which is 100002 * 2 + 6
. Now,
3 ^ 200007 =
3 ^ (100002 + 100002 + 6) =
3 ^ 100002 * 3 ^ 100002 * 3 ^ 6
FLT claims that (3 ^ 100002) % 100003 == 1
, and the last line above, modulo 100003, reduces to 3 ^ 6
. In general, for a prime p
,
(k ^ n) % p == k ^ (n % p)
Of course, it only speeds the computation if the exponent n
is greater than p
. As per your request (exponent 100
, modulo 100003
) there is nothing to reduce. Go straight to the Kaidul's approach.