Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में m + sum(m) + sum(sum(m)) = N को संतुष्ट करने वाली संख्याओं की गिनती


एक संख्या 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

  1. - C++ में फाइबोनैचि संख्याओं के वर्गों का योग

    समस्या विवरण फाइबोनैचि श्रृंखला: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... जहां प्रत्येक संख्या पिछली दो का योग होती है। पहले n फाइबोनैचि संख्याओं के वर्गों का योग ज्ञात करें। उदाहरण: n = 4 F0=0, F1=1, F2=1, F3=2, F4=3 वर्ग: 0²+1²+1²+2²+3² = 0+1+1+4+9 = 15 उदाहरण कोड #include <iostream> using

  1. - C++ प्रोग्राम: प्राकृतिक संख्याओं का योग गणना करें

    परिचयप्राकृतिक संख्याएं 1 से शुरू होने वाले धनात्मक पूर्णांक हैं। प्राकृतिक संख्याओं का क्रम है - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10... पहली n प्राकृतिक संख्याओं का योग for लूप या फॉर्मूला का उपयोग करके गणना किया जा सकता है। for लूप का उपयोग करके प्राकृतिक संख्याओं का योगfor लूप का उपयोग करके n प्राकृतिक

  1. - C++ प्रोग्राम: दो संख्याएं जोड़ें

    परिचयजोड़ एक बुनियादी अंकगणितीय संक्रिया है। दो संख्याओं को जोड़ने वाला प्रोग्राम दो संख्याओं का जोड़ करता है और उनका योग स्क्रीन पर प्रिंट करता है। उदाहरण#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum; sum = num1 + num2; cout << Sum of