इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य C++ में Nवें फाइबोनैचि संख्या के अंतिम दो अंक ढूंढने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
हमें Nवें फाइबोनैचि संख्या के अंतिम दो अंक (यानी दो LSB) ढूंढने हैं।
उदाहरण
इनपुट: N = 120
आउटपुट: 81
हल का दृष्टिकोण
एक सरल समाधान Nवें पद को ढूंढने के लिए सीधे फाइबोनैचि सूत्र का उपयोग करना होगा। लेकिन यह विधि तब संभव नहीं होगी जब 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