From 58001c8c4cc310a0ff834d33c4b92a1d48568dd9 Mon Sep 17 00:00:00 2001 From: Paul Jungeblut Date: Sat, 10 Jun 2017 23:48:05 +0200 Subject: Removing stupid multMod. --- math/modExp.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'math/modExp.cpp') diff --git a/math/modExp.cpp b/math/modExp.cpp index 967068c..d74eca0 100644 --- a/math/modExp.cpp +++ b/math/modExp.cpp @@ -1,15 +1,7 @@ -// Laufzeit: O(log(b)) -ll multMod(ll a, ll b, ll n) { - if(a == 0 || b == 0) return 0; - if(b == 1) return a % n; - if(b % 2 == 1) return (a + multMod(a, b-1, n)) % n; - else return multMod((a + a) % n, b / 2, n); -} - // Laufzeit: O(log(b)) ll powMod(ll a, ll b, ll n) { - if(b == 0) return 1; - if(b == 1) return a % n; - if(b % 2 == 1) return multMod(powMod(a, b-1, n), a, n); - else return powMod(multMod(a, a, n), b / 2, n); + if(b == 0) return 1; + if(b == 1) return a % n; + if(b & 1) return (powMod(a, b - 1, n) * a) % n; + else return powMod((a * a) % n, b / 2, n); } -- cgit v1.2.3