एक संख्या N इनपुट के रूप में दी गई है। लक्ष्य N तक की उन संख्याओं m को ढूंढना है जो निम्नलिखित शर्त को संतुष्ट करती हैं। यहां N<=109
m + sum(m) + sum ( sum (m) ) = N। जहां sum(m) m के अंकों का योग है।
यदि m 137 है तो sum(m)=1+3+7=11 और sum(sum(m))= sum(11)= 1+1=2
उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - N=27
आउटपुट - m + sum(m) + sum(sum(m)) = N को संतुष्ट करने वाली संख्याओं की संख्या: 3
व्याख्या - संख्याएं हैं:
9 ( 9 + 9 + 9 = 27 )
15 ( 15 + (1+5) + (6) = 27 )
21 ( 21 + (2+1) + (3) = 27 )
इनपुट - N=81
आउटपुट - m + sum(m) + sum(sum(m)) = N को संतुष्ट करने वाली संख्याओं की संख्या: 2
व्याख्या - संख्याएं हैं:
63 ( 63 + (6+3) + 9 = 81 )
66 ( 66 + (6+6) + (1+2) = 81 )
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
इस दृष्टिकोण में हम संख्याओं के अंकों के योग की गणना करेंगे और उनकी तुलना N से करेंगे। यदि गणना किया गया योग N के बराबर है तो काउंट बढ़ाएं। अंत में परिणाम के रूप में काउंट लौटाएं।
चूंकि सबसे बड़ी संख्या 109 हो सकती है तो m के अंकों का अधिकतम योग 81 ( 9*9 ) हो सकता है और sum(sum(m)) के लिए अगला अधिकतम योग 16 ( 79 के लिए 7+9 ) हो सकता है। इसलिए हम N-97 से N तक की संख्याओं की जांच करेंगे क्योंकि N-97 से छोटे और N से बड़े पूर्णांक दी गई शर्त को संतुष्ट नहीं करेंगे।
- पूर्णांक N को इनपुट के रूप में लें।
- फ़ंक्शन total(int num) एक संख्या total लेता है और उसके अंकों का योग लौटाता है।
- res_total को अंकों के योग और res को वर्तमान शेष के रूप में लें। दोनों को 0 से इनिशियलाइज़ करें।
- while लूप का उपयोग करके प्रत्येक इकाई अंक को पार करें।
- इकाई अंक को res=num % 10 के रूप में लें और res_total में जोड़ें।
- अगले अंक के लिए num को 10 से घटाएं।
- अंत में num के अंकों के योग के रूप में res_total लौटाएं।
- फ़ंक्शन condition(int N) N लेता है और m + sum(m) + sum(sum(m)) को संतुष्ट करने वाली संख्याओं की गिनती लौटाता है।
- प्रारंभिक गिनती 0 लें।
- i=N-97 से i<=N तक for लूप का उपयोग करके पार करें।
- अंकों के योग की गणना temp_1=total(i) के रूप में करें।
- total(i) के अंकों के योग की गणना total(temp_1) के रूप में करें।
- temp_3 = i + temp_1 + temp_2 सेट करें। यदि यह N के बराबर है तो काउंट बढ़ाएं।
- for लूप के अंत में परिणाम के रूप में काउंट लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int total(int num) { int res_total = 0; int res = 0; while (num > 0) { res = num % 10; res_total = res_total + res; num = num / 10; } return res_total; } int condition(int N) { int count = 0; for (int i = N - 97; i <= N; i++) { int temp_1 = total(i); int temp_2 = total(temp_1); int temp_3 = i + temp_1 + temp_2; if (temp_3 == N) { count++; } } return count; } int main() { int N = 9999; cout << "Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: " << condition(N); return 0; } यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
आउटपुट
Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: 2