मान लीजिए कि हमारे पास एक संख्या n है। अमल अपने पालतू जानवर को एक नाम देना चाहता है। वह एनाल्गोरिदम का पालन करेगा। नाम n वर्ण लंबा होगा। नाम में अपरकेस और लोअरकेसलेटर्स 'O's और 'o's होंगे। एल्गोरिथम सुझाव देता है कि नाम का i-th अक्षर 'O' (अपरकेस) होना चाहिए, यदि i फाइबोनैचि अनुक्रम का सदस्य है, और 'o' (लोअरकेस) अन्यथा। नाम के अक्षरों की संख्या 1 से n तक होती है।
इसलिए, यदि इनपुट n =10 जैसा है, तो आउटपुट "OOOoOooOoo" होगा, क्योंकि पहले फाइबोनैकीनंबर 1, 2, 3, 5 आदि होते हैं।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
s := a string of size n and filled with 'o's for initializing i and j from 1, when i <= n, increase i by j and set j := i-j after each iteration, do s[i-1] := 'O' return s.
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; string solve(int n){ string s(n, 'o'); for (int i = 1, j = 1; i <= n; i += j, j = i - j) s[i - 1] = 'O'; return s; } int main(){ int n = 10; cout << solve(n) << endl; }
इनपुट
10
आउटपुट
OOOoOooOoo