15 lines
423 B
Haskell
15 lines
423 B
Haskell
powm :: Integer -> Integer -> Integer -> Integer -> Integer
|
|
powm b 0 m r = r
|
|
powm b e m r
|
|
| e `mod` 2 == 1 = powm (b * b `mod` m) (e `div` 2) m (r * b `mod` m)
|
|
powm b e m r = powm (b * b `mod` m) (e `div` 2) m r
|
|
|
|
main :: IO ()
|
|
main =
|
|
print $
|
|
powm
|
|
2988348162058574136915891421498819466320163312926952423791023078876139
|
|
2351399303373464486466122544523690094744975233415544072992656881240319
|
|
(10 ^ 40)
|
|
1
|