Number of ZigZag Arrays II
Solution
class Solution:
MOD = 1_000_000_007
def mul(self, a, b):
n = len(a)
m = len(b[0])
res = [[0] * m for _ in range(n)]
for i in range(n):
for k in range(len(a[0])):
r = a[i][k]
if r == 0: continue
for j in range(m):
res[i][j] = (res[i][j] + r * b[k][j]) % self.MOD
return res
def powMul(self, base, exp, res):
while exp > 0:
if exp & 1:
res = self.mul(res, base)
base = self.mul(base, base)
exp >>= 1
return res
