Bài toán đệ quy cơ bản
View as PDFTrong bài giảng về kỹ thuật đệ quy, anh Lazyman đã kể một câu chuyện rất hay về nhà Toán học nổi tiếng: François Édouard Anatole Lucas (1842-1891). Có một dãy số được đặt theo tên ông nhằm vinh danh các nghiên cứu của ông về các dãy số nguyên có những ứng dụng quan trọng trong thực tế: dãy số Lucas.

Cách tính số Lucas khá giống số Fibonacci: bắt đầu bằng ~2~ và ~1~, mỗi số tiếp theo bằng tổng của hai số liền trước. Thậm chí công thức tổng quát của nó còn đẹp hơn so với của Fiboacci:
~{{L}_{n}}={{\left( \frac{1-\sqrt{5}}{2} \right)}^{n}}+{{\left( \frac{1+\sqrt{5}}{2} \right)}^{n}}~
Các số đầu tiên của dãy Lucas: ~2,1,3,4,7,11,18,29,47,76,123,...~
Anh Lazyman đã yêu cầu các SV của CLB H3.2 hãy cài đặt đệ quy để tính số hạng thứ ~n~ của dãy này. Các bạn đều rất hào hứng và code ra rất nhanh. Thế là anh bèn nâng độ khó lên "chút xíu" bằng cách cho số ~n~ lên lớn hơn. Điều này có thể kéo theo giá trị của dãy Lucas thu được rất lớn nên kết quả sẽ phải chia dư cho ~10^9+7.~ Bạn hãy giúp các SV của CLB H3.2 khử đệ quy cho bài này nhé!
Input:
Một số nguyên dương ~n~ duy nhất có giá trị không quá ~10^{1000}~.
Output:
Câu trả lời của bài toán.
Sample input 1.
1
Sample output 1.
2
Sample input 2.
2
Sample output 2.
1
Sample input 3.
2554496573107241984
Sample output 3.
97012495
Ghi chú: hãy đọc kỹ giới hạn của đề bài, là ~10~ mũ ~1000~, bạn không nhìn nhầm đâu.
Comments