इनपुट के रूप में एक नंबर N दिया गया है। लक्ष्य N तक m तक की संख्याएँ ज्ञात करना है जो निम्नलिखित शर्त को पूरा करती हैं। यहां एन<=10 9
एम + योग (एम) + योग (योग (एम)) =एन। जहां योग (एम) एम के अंकों का योग है।
यदि m 137 है तो योग(m)=1+3+7=11 और योग(योग(m))=योग(11)=1+1=2
आइए उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - एन=27
आउटपुट - एम + योग (एम) + योग (योग (एम)) =एन को संतुष्ट करने वाली संख्याओं की संख्या हैं:3
स्पष्टीकरण - नंबर हैं:
9 ( 9 + 9 + 9 =27 )
15 ( 15 + (1+5) + (6) =27 )
21 ( 21 + (2+1) + (3) =27 )
इनपुट - एन=81
आउटपुट - एम + योग (एम) + योग (योग (एम)) =एन को संतुष्ट करने वाली संख्याओं की संख्या हैं:2
स्पष्टीकरण - नंबर हैं:
63 ( 63 + (6+3) + 9 =81 )
66 ( 66 + (6+6) + (1+2) =81 )
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
इस दृष्टिकोण में हम संख्याओं के अंकों के योग की गणना करेंगे और जोड़े गए योगों की तुलना N से करेंगे। यदि परिकलित योग N के बराबर है, तो वृद्धि की गणना। अंत में परिणाम के रूप में वापसी की गणना करें।
चूंकि सबसे बड़ी संख्या 10 9 . हो सकती है तो m के अंकों का अधिकतम योग 81 (9*9) हो सकता है और योग (योग(m)) के लिए अंकों का अगला अधिकतम योग 16 (79 के लिए 7+9) हो सकता है। इसलिए हम N-97 से N तक की संख्याओं की जाँच करेंगे क्योंकि N-97 से छोटे और N से बड़े पूर्णांक दी गई शर्त को पूरा नहीं करेंगे।
- इनपुट के रूप में पूर्णांक N लें।
- फ़ंक्शन टोटल(int num) कुल संख्या लेता है और उसके अंकों का योग देता है।
- res_total को अंकों के योग के रूप में लें और res को वर्तमान शेष के रूप में लें। दोनों को 0 से प्रारंभ करें।
- थोड़ी देर के लूप का उपयोग करके प्रत्येक इकाई अंक को पार करें।
- इकाई अंक को res=num% 10 के रूप में लें और res_total में जोड़ें।
- अगले अंक के लिए संख्या को 10 से कम करें।
- अंत में अंकों के योग के रूप में res_total लौटाएं।
- फ़ंक्शन कंडीशन (इंट एन) एन लेता है और एम + योग (एम) + योग (योग (एम)) को संतुष्ट करने वाली संख्याओं की गिनती देता है।
- प्रारंभिक गणना 0 के रूप में लें।
- फॉर लूप का उपयोग करके i=N-97 से i<=N तक ट्रैवर्स करें।
- अंकों के योग की गणना temp_1=total(i) के रूप में करें।
- कुल (i) के अंकों के योग की गणना कुल (temp_1) के रूप में करें।
- temp_3 =i + temp_1 + temp_2 सेट करें। यदि यह N के बराबर है तो वेतन वृद्धि की गणना करें।
- लूप के अंत में परिणाम के रूप में वापसी की गणना करें।
उदाहरण
#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