λ°±μ€ 1904 νμ΄μ¬
https://www.acmicpc.net/problem/1904
ν΄λΉ λ¬Έμ λ... "00" νμΌκ³Ό "1" νμΌλ‘ λ§λ€ μ μλ μ΄μ§μμ κ°μ§μλ₯Ό μ°Ύλ λ¬Έμ μ λλ€. μ΄ λ¬Έμ λ κ²°κ΅ 1νμΌκ³Ό 00νμΌμ μ΄μ μ νμ μ λΆμΉλ λ¬Έμ μ΄λ―λ‘ λ©λͺ¨μ΄μ μ΄μ μ μ΄μ©ν λμ κ³νλ²μΌλ‘ ν μ μλ€. κ·Έλ°λ°... μ§μ μμΌλ‘ μ«μμ ν¨ν΄μ κ³μ°ν΄λ³΄λ νΌλ³΄λμΉ μμ΄κ³Ό μμ Ό λμΌν μ«μμ ν¨ν΄μ κ°κ³ μμμ΅λλ€. κ·Έλμ μ΄ λ¬Έμ λ νλ ¬ λ©±λ²μ μ¬μ©ν΄μ ν΄κ²°ν μ μμμ΅λλ€.
Python νμ΄ 1
μ²«λ² μ§Έ νμ΄λ λμ κ³νλ²μ μ¬μ©νμ΅λλ€.
import sys
read = sys.stdin.readline
N = int(read())
cache = [0] * (N+2)
cache[1] = 1
cache[2] = 2
for i in range(3, N+1):
cache[i] = (cache[i-1] + cache[i-2]) % 15746
print(cache[N])
- μ΄κΈ° κ° 1, 2λ₯Ό μ μ₯ν΄λκ³ κ°μ μ¬μ¬μ©νλ©΄μ λ¬Έμ λ₯Ό νμμ΅λλ€.
λ¬Έμ λ₯Ό νκΈ°λ νλλ°... λ©λͺ¨λ¦¬ μ¬μ©λλ λκ³ μν μλκ° μ€λ 걸리길λ.... μ½λλ₯Ό μ‘°κΈ μμ ν΄λ΄€μ΅λλ€.
Python νμ΄ 2
import sys
read = sys.stdin.readline
N = int(read())
n1 = 1
n2 = 2
res = 1 if N == 1 else 2
for i in range(3, N+1):
res = (n1 + n2) % 15746
n1, n2 = n2, res
print(res)
λλ² μ§Έ νμ΄λ λμ κ³νλ²μΌλ‘ νμμ λ λ§μ΄ μ‘μλ¨Ήλ λ©λͺ¨λ¦¬λ₯Ό μ€μ΄κΈ° μν΄ μΊμ 리μ€νΈλ₯Ό μμ κ³ λ³μλ‘ κ³μ λ°κΏκ°λ©΄μ νλλ‘ μμ νμ΅λλ€. λ©λͺ¨λ¦¬λ 2λ°°μ΄μ μ μ½λμκ³ μκ°λ 25% μ λ μ κ°ν μ μμμ΅λλ€.
Python νμ΄ 3
3λ²μ§Έ νμ΄λ νλ ¬μ λ©±λ²μ μ¬μ©νμ΅λλ€.
import sys
read = sys.stdin.readline
N = int(read())
A = [[1, 1], [1, 0]]
def matrix_mult(A, B):
temp = [[0] * 2 for _ in range(2)]
for i in range(2):
for j in range(2):
for k in range(2):
temp[i][j] += (A[i][k] * B[k][j])
for i in range(2):
for j in range(2):
temp[i][j] %= 15746
return temp
def matrix_pow(n, M):
if n == 1:
return M
if n % 2 == 0:
temp = matrix_pow(n//2, M)
return matrix_mult(temp, temp)
else:
temp = matrix_pow(n-1, M)
return matrix_mult(temp, M)
print(matrix_pow(N, A)[0][0])
λ¬Έμ μ κ²°κ³Όλ₯Ό μμΌλ‘ κ³μ νμ΄λ³΄λκΉ... νΌλ³΄λμΉμ λμΌνκ² μ«μκ° μ¦κ°λκ³ μλ κ²μ νμΈνμ΅λλ€. νΌλ³΄λμΉ μμ΄μμ κ°μ₯ λΉ λ₯Έ ν¨μ¨μ μ»μ μ μλ λ°©λ²μΈ νλ ¬μ λ©±λ²μ μ΄μ©ν λ°©λ²μ μ ννκ³ ... λμ κ³νλ²μΌλ‘ νμλ λ°©λ²λ³΄λ€ 80%μ λ λΉ λ₯΄κ² κ²°κ³Όλ₯Ό μ»μ μ μμμ΅λλ€.
νΌλ³΄λμΉλ₯Ό νλ ¬λ‘ νΈλ λ°©λ²μ μλ λ§ν¬λ₯Ό ν΅ν΄ μμΈν λ΄μ©μ νμΈν μ μμ΅λλ€.
[CS/μκ³ λ¦¬μ¦] - νΌλ³΄λμΉ νμ΄μ¬μΌλ‘ ꡬνλ 3κ°μ§ μκ³ λ¦¬μ¦
λκΈ