इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम C++ में Nth फाइबोनैचि संख्या के अंतिम दो अंकों को खोजने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
हमें Nth फाइबोनैचि संख्या के अंतिम दो अंक (अर्थात दो LSB) खोजने होंगे। समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :एन =120
आउटपुट :81
समाधान दृष्टिकोण
Nth पद ज्ञात करने के लिए एक सरल समाधान प्रत्यक्ष फाइबोनैचि सूत्र का उपयोग करना होगा। लेकिन यह विधि तब संभव नहीं होगी जब N एक बड़ी संख्या हो। तो इस पर काबू पाने के लिए, हम फिबोनाची श्रृंखला की संपत्ति का उपयोग करेंगे जो कि अंतिम दो अंक 300 शब्दों के बाद खुद को दोहराते हैं। अर्थात। 75वें पद के अंतिम दो अंक वही हैं जो 975वें पद के हैं।
इसका मतलब है कि 300 तक काम करने से हमें सभी संभव संयोजन मिलेंगे और यह पता लगाने के लिए कि किस शब्द का उपयोग करना है, हम 300 के साथ संख्या का मॉड पाएंगे।
उदाहरण
#include <iostream> using namespace std; long int fibo(int N){ long int a=0,b=1,c; for(int i=2; i<= N;i++) { c=a+b; a=b; b=c; } return c; } int findLastTwoDigitNterm(int N) { N = N % 300; return ( fibo(N)%100); } int main() { int N = 683; cout<<"The last two digits of "<<N<<"th Fibonacci term are "<<findLastTwoDigitNterm(N); return 0; }
आउटपुट
The last two digits of 683th Fibonacci term are 97