हमें दिए गए चार अंकों 1, 2, 3 और 4 से बनी nवीं संख्या में अंकों की संख्या ज्ञात करनी है।
उपरोक्त चार अंकों वाली श्रृंखला इस प्रकार है
1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...
हमें उपरोक्त श्रृंखला से nवीं संख्या के अंकों की संख्या ज्ञात करनी है। यदि आप पैटर्न को ध्यान से देखें, तो आपको निम्नलिखित बिंदु मिलेंगे।
-
1 अंक वाली 4 संख्याएं होती हैं।
-
2 अंकों वाली 16 संख्याएँ होती हैं।
-
पैटर्न 4 की शक्तियों के रूप में जारी है।
आइए एक उदाहरण देखें
इनपुट
7
आउटपुट
2
श्रंखला में 7वां अंक 13 है और इसमें अंकों की संख्या 2 है।
एल्गोरिदम
- संख्या n प्रारंभ करें।
- परिणाम को स्टोर करने के लिए एक और श्रृंखला में कुल संख्याओं को संग्रहीत करने के लिए दो चर प्रारंभ करें।
- एक लूप बनाएं जिसने 4 की शक्तियों द्वारा पुनरावृत्त चर को बढ़ाया।
- वर्तमान संख्या को योग चर में जोड़ें।
- यदि कुल योग n से अधिक है, तो लूप को तोड़ दें।
- परिणाम में 1 जोड़ें क्योंकि संख्या के अगले सेट में संख्याओं के पिछले सेट की तुलना में एक अंक अतिरिक्त होगा।
- परिणाम लौटाएं।
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include <bits/stdc++.h> using namespace std; int getDigitsCount(int n) { int i, result = 1, sum = 0; for (i = 4; ; i *= 4) { sum += i; if (sum >= n) { break; } result += 1; } return result; } int main() { int n = 57; cout << getDigitsCount(n) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
3