Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #https://www.hackerearth.com/problem/algorithm/pk-and-interesting-language/
- '__author__'=='deepak Singh Mehta(learning Matrix expo. :) ) '
- g,a,r,C = list(),list(),list(),list()
- mod = 1000000007
- def init():
- global a,r,C
- a = [[0 for i in range(26)] for i in range(26)]
- r = [[0 for i in range(26)] for i in range(26)]
- C = [[0 for i in range(26)] for i in range(26)]
- def matMultiply(A,B):
- global mod
- for i in range(26):
- for j in range(26):
- C[i][j]=0
- for k in range(26):
- C[i][j] +=(A[i][k]*B[k][j])%mod;
- for i in range(26):
- for j in range(26):
- A[i][j] = C[i][j]
- def matPower(k):
- while k:
- if k&1:
- matMultiply(r,a)
- matMultiply(a,a)
- k >>= 1
- if __name__=='__main__':
- letters = 'abcdefghijklmnopqrstuvwxyz'
- init()
- for _ in range(26):
- #for j in range(26):
- temp = list(map(int,input().split()))
- g.append(temp)
- t = int(input())
- assert(1 <= t and t <= 100)
- for _ in range(t):
- ch,l = map(str,input().split())
- l = int(l)
- assert(1<= l and l<=10000000)
- ans = 0
- u = letters.index(ch)
- for i in range(26):
- for j in range(26):
- r[i][j]=a[i][j]=g[i][j]
- l -= 2
- matPower(l)
- for i in range(26):
- ans = (ans + r[i][u])%mod
- print(ans)
Add Comment
Please, Sign In to add comment