Fibonacci nhanh
Xem dưới dạng PDF
Gửi bài giải
Điểm:
30
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 \ge 2\)
Cho n và M, 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 \le n \le 10^18\)) và M (\(1 \le M \le 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.
Ràng buộc & Subtasks
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | 40% | Giới hạn nhỏ |
| 2 | 60% | Không có ràng buộc gì thêm |
Nhận xét