From db5ee187a9fb8d9338c74e74c2d2b4b38b2ab586 Mon Sep 17 00:00:00 2001 From: Gloria Mundi Date: Tue, 27 Feb 2024 15:56:26 +0100 Subject: minor formatting and spelling fixes --- math/linearRecurence.cpp | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 math/linearRecurence.cpp (limited to 'math/linearRecurence.cpp') diff --git a/math/linearRecurence.cpp b/math/linearRecurence.cpp deleted file mode 100644 index 2501e64..0000000 --- a/math/linearRecurence.cpp +++ /dev/null @@ -1,33 +0,0 @@ -constexpr ll mod = 1'000'000'007; -vector modMul(const vector& a, const vector& b, - const vector& c) { - ll n = sz(c); - vector res(n * 2 + 1); - for (int i = 0; i <= n; i++) { //a*b - for (int j = 0; j <= n; j++) { - res[i + j] += a[i] * b[j]; - res[i + j] %= mod; - }} - for (int i = 2 * n; i > n; i--) { //res%c - for (int j = 0; j < n; j++) { - res[i - 1 - j] += res[i] * c[j]; - res[i - 1 - j] %= mod; - }} - res.resize(n + 1); - return res; -} - -ll kthTerm(const vector& f, const vector& c, ll k) { - assert(sz(f) == sz(c)); - vector tmp(sz(c) + 1), a(sz(c) + 1); - tmp[0] = a[1] = 1; //tmp = (x^k) % c - - for (k++; k > 0; k /= 2) { - if (k & 1) tmp = modMul(tmp, a, c); - a = modMul(a, a, c); - } - - ll res = 0; - for (int i = 0; i < sz(c); i++) res += (tmp[i+1] * f[i]) % mod; - return res % mod; -} -- cgit v1.2.3