summaryrefslogtreecommitdiff
path: root/content/math
diff options
context:
space:
mode:
Diffstat (limited to 'content/math')
-rw-r--r--content/math/math.tex2
-rw-r--r--content/math/matrixPower.cpp8
2 files changed, 5 insertions, 5 deletions
diff --git a/content/math/math.tex b/content/math/math.tex
index 2f50845..d59da54 100644
--- a/content/math/math.tex
+++ b/content/math/math.tex
@@ -121,7 +121,7 @@ sich alle Lösungen von $x^2-ny^2=c$ berechnen durch:
\begin{algorithm}{Matrix-Exponent}
\begin{methods}
\method{precalc}{berechnet $m^{2^b}$ vor}{\log(b)\*n^3}
- \method{calc}{berechnet $m^b\cdot$}{\log(b)\cdot n^2}
+ \method{calc}{berechnet $m^b \cdot v$}{\log(b)\cdot n^2}
\end{methods}
\textbf{Tipp:} wenn \code{v[x]=1} und \code{0} sonst, dann ist \code{res[y]} = $m^b_{y,x}$.
\sourcecode{math/matrixPower.cpp}
diff --git a/content/math/matrixPower.cpp b/content/math/matrixPower.cpp
index 0729c15..d80dac6 100644
--- a/content/math/matrixPower.cpp
+++ b/content/math/matrixPower.cpp
@@ -1,14 +1,14 @@
vector<mat> pows;
void precalc(mat m) {
- pows = {mat(ssize(m.m), 1), m};
- for (int i = 1; i < 60; i++) pows.push_back(pows[i] * pows[i]);
+ pows = {m};
+ for (int i = 0; i < 60; i++) pows.push_back(pows[i] * pows[i]);
}
auto calc(ll b, vector<ll> v) {
- for (ll i = 1; b > 0; i++) {
+ for (ll i = 0; b > 0; i++) {
if (b & 1) v = pows[i] * v;
- b /= 2;
+ b >>= 1;
}
return v;
}