22 lines
527 B
Haskell
22 lines
527 B
Haskell
powerMod :: Integer -> Integer -> Integer -> Integer
|
|
powerMod b e m = x
|
|
where
|
|
(_, _, x) =
|
|
until
|
|
(\(_, e, _) -> e <= 0)
|
|
(\(b, e, x) ->
|
|
( mod (b * b) m
|
|
, div e 2
|
|
, if 0 /= mod e 2
|
|
then mod (b * x) m
|
|
else x))
|
|
(b, e, 1)
|
|
|
|
main :: IO ()
|
|
main =
|
|
print $
|
|
powerMod
|
|
2988348162058574136915891421498819466320163312926952423791023078876139
|
|
2351399303373464486466122544523690094744975233415544072992656881240319
|
|
(10 ^ 40)
|