Bài toán đệ quy cơ bản

View as PDF

Submit solution

Points: 1.00
Time limit: 1.0s
Memory limit: 64M
Input: stdin
Output: stdout

Author:
Problem type

Trong 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

Please read the guidelines before commenting.


There are no comments at the moment.