हमें दिए गए चार अंकों 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