← Back to List

17211번: 좋은 날 싫은 날 ↗

Solutions

Python 3
1.1 KB | 1173 chars
import sys
from math import sqrt, pi, sin, factorial, ceil, floor
from datetime import datetime, timedelta
sys.setrecursionlimit(10**7)

BLANK = " "

#inp = input
inp = lambda : sys.stdin.readline().rstrip()
mii = lambda x = BLANK : [*map(int,inp().split(x))]
mfi = lambda x = BLANK : [*map(float,inp().split(x))]
ii = lambda : int(inp())
fi = lambda : float(inp())
p = print

def multiply(a, b):
  ret = [[0] * 2 for _ in range(2)]
  
  ret[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0]
  ret[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1]
  ret[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0]
  ret[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1]

  return ret


def mul(l, n):
  matrix = l[::]
  if n == 1:
    return matrix
  
  if n == 2:
    return multiply(matrix[::], matrix[::])

  k = mul(matrix[::], n // 2)

  if n % 2 == 0:
    return multiply(k, k)
  else:
    return multiply(multiply(k, k), matrix[::])
  
    
def solve():
  n, k = mii()
  l = mfi()
  
  l = [[l[0], l[1]], [l[2], l[3]]]
  
  ret = mul(l[::], n)
  
  for i in range(2):
    p(int(ret[k][i] * 1000))

      
if __name__ == "__main__":
  tc = 1

  for t in range(1, tc+1):
    ret = solve()