Fibonacci nhanh

Xem dưới dạng PDF

Gửi bài giải


Điểm: 1
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Dãy Fibonacci được định nghĩa:

  • F(0) = 0
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2) với n ≥ 2

Cho nM, hãy tính F(n) modulo M.

Với n lên đến 10^18, cần sử dụng luỹ thừa ma trận (matrix exponentiation) để tính trong O(log n).

Ma trận truy hồi:

[F(n+1)  F(n)  ]   =   [1  1] ^ n
[F(n)    F(n-1)]       [1  0]
Đầu vào

Một dòng duy nhất gồm hai số nguyên n (0 ≤ n ≤ 10^18) và M (1 ≤ M ≤ 10^9+7).

Đầu ra

Một số nguyên duy nhất là F(n) mod M.

Ví dụ
Input:
10 1000000007

Output:
55

F(10) = 55.


Nhận xét

Không có ý kiến tại thời điểm này.