समस्या विवरण
दो संख्याएं start और end दी गई हैं जो एक रेंज दर्शाती हैं। लक्ष्य [start, end] के बीच मौजूद यूनरी संख्याओं की संख्या ज्ञात करना है।
हम जांच सकते हैं कि संख्या यूनरी है या नहीं निम्न चरणों का पालन करके: यदि हम संख्या 13 लेते हैं तो 1^2 + 3^2 = 10, फिर 1^2 + 0^2 = 1। तो इस तरह अंतिम योग 1 है इसलिए 13 यूनरी है।
उदाहरण
इनपुट
start=1 end=20
आउटपुट
रेंज में यूनरी संख्याओं की गिनती: 5
व्याख्या
संख्याएं हैं: 1, 7, 10, 12, और 13
इनपुट
start=50 end=100
आउटपुट
रेंज में यूनरी संख्याओं की गिनती: 7
व्याख्या
संख्याएं हैं: 59, 63, 67, 74, 75, 78, और 89
दृष्टिकोण
1 और 9 के बीच संख्याएं 1 और 7 यूनरी हैं। अन्य संख्याओं के लिए हम अंकों के वर्गों के योग का उपयोग करेंगे जब तक यह 1 न दे दे। इस प्रक्रिया को रेंज में सभी संख्याओं के लिए जारी रखें। इस तरीके से मिली सभी यूनरी संख्याओं के लिए गिनती बढ़ाएं।
एल्गोरिदम चरण
- दो पूर्णांक
start,endइनपुट के रूप में लें। - फंक्शन
check_unary(int number)पास किए गए मान के यूनरी होने पर true लौटाता है अन्यथा false। - फंक्शन
Unary_range(int start, int end)रेंज चर लेता है और रेंज में स्थित यूनरी संख्याओं की संख्या लौटाता है। - प्रारंभिक गिनती 0 लें।
forलूप का उपयोग करकेi=startसेendतक पार करें। यदिcheck_unary(i)true लौटाता है, तो गिनती बढ़ाएं। check_unary(int number)के अंदर, अस्थायी चरcountलें।- यदि संख्या
N1, 7 है, तो true लौटाएं। 10 से कम अन्य सभी संख्याओं के लिए false लौटाएं। (number/10 == 0)। - फिर
whileलूप में अंकों के वर्गों का योग गणना करें। - ऐसे लगातार योगों के लिए फिर से
check_unary(int number)कॉल करें जब तक योग 1 न हो जाए। - परिणाम के रूप में गिनती लौटाएं।
C++ कोड उदाहरण
#include <iostream>
using namespace std;
bool check_unary(int number) {
int total = 0;
if (number == 1) {
return true;
} else if(number == 7) {
return true;
} else if (number / 10 == 0) {
return false;
}
while (number != 0) {
int temp = number % 10;
total = total + temp * temp;
number = number / 10;
}
return check_unary(total);
}
int Unary_range(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
if (check_unary(i) == 1) {
count++;
}
}
return count;
}
int main() {
int start = 200, end = 400;
cout << "रेंज में यूनरी संख्याओं की गिनती: " << Unary_range(start, end);
return 0;
}
आउटपुट
रेंज में यूनरी संख्याओं की गिनती: 31