fork download
  1. import numpy as np
  2. from numpy import linalg as LA
  3. from fractions import gcd
  4.  
  5. def expo(A , m):
  6. if m==1:
  7. return A
  8.  
  9. #print A
  10. p = 1
  11. for x in np.nditer(A):
  12. p = gcd(p,x)
  13.  
  14. A /= p
  15. #A /= gcd( gcd(A[1][0],A[1][1] ),gcd(A[0][0],A[0,1] ) )
  16. C = np.matrix( "0,0 ; 0,0")
  17. #print C
  18. if ~m&1:
  19. C = expo(A,m/2)*expo(A,m/2)
  20. return C
  21. else:
  22. C = A*expo(A,m/2)
  23. return C
  24.  
  25.  
  26.  
  27.  
  28. A = np.matrix( "1,1 ; 1,2")
  29. B = np.matrix( " 1;1")
  30.  
  31. t= input()
  32. while t:
  33. t-=1
  34. n,mod = map(int,raw_input().split())
  35. if n==1:
  36. print "1/1"
  37. else:
  38. print (expo(A,n-1)*B) % mod
  39.  
  40.  
  41.  
Success #stdin #stdout 0.19s 21144KB
stdin
1
50 1000
stdout
[[465]
 [352]]