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

C++ में विशिष्ट मान से अधिक संख्या और उसके अंकों के योग के बीच अंतर वाली संख्याओं की गणना करें

हमें दो संख्याएँ N प्रदान की जाती हैं जो एक श्रेणी [1,N] और D को परिभाषित करती हैं जो एक अंतर है। लक्ष्य [1,N] की सीमा में सभी संख्याओं को इस तरह खोजना है कि [संख्या - (इसके अंकों का योग) ]> D. हम इसे 1 से N तक की संख्याओं को पार करके करेंगे और प्रत्येक संख्या के लिए हम थोड़ी देर के लूप का उपयोग करके इसके अंकों के योग की गणना करेंगे। जांचें कि क्या संख्या और परिकलित अंकों के योग का अंतर D से अधिक है।

आइए उदाहरणों से समझते हैं।

इनपुट

N=15 D=5

आउटपुट

Numbers such that difference b/w no. and its digit sum greater than value D: 6

स्पष्टीकरण

Numbers 10, 11, 12, 13, 14, 15 satisfy the condition. ( 10-1, 11-2, 12-3, 13-4, 14-5, 15-6 ) all differences are 9 which is greater than 5.

इनपुट

N=20 D=10

आउटपुट

Only 20 satisfies the condition. 20-2=18 > 10.

स्पष्टीकरण

This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम पूर्णांक N और D लेते हैं।

  • फंक्शन digitSum(int n, int d) वेरिएबल N, D लेता है और संख्याओं की गिनती (num-digitsum)>d.

    के साथ देता है।
  • ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।

  • परिवर्तनीय डिगसम को 0 के रूप में लें

  • लूप के लिए उपयोग कर संख्याओं की ट्रैवर्स श्रेणी। i=1 से i=n

  • अब प्रत्येक संख्या के लिए num=i, जबकि लूप का उपयोग करके जांचें कि क्या संख्या>0 है।

  • डिगसम+=संख्या%10 की गणना करें। अगला अंक जोड़ने के लिए num=num/10 कम करें।

  • समय के अंत में, जांचें कि क्या (i - डिगसम> d)। अगर सही वेतन वृद्धि गिनती है।

  • सभी लूपों के अंत में काउंट की कुल संख्या होगी जो शर्त को पूरा करती है।

  • परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int digitSum(int n, int d){
   int count = 0;
   int digsum = 0;
   for (int i = 1; i <= n; i++){
      int num=i;
      digsum=0;
      while(num>0){
         digsum+=num%10; //sum of digits
         num=num/10;
      }
      if(i-digsum>d) //original number is i {
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int N = 20;
   int D = 8;
   cout <<"Numbers such that difference between number and its digit sum greater than specific value: "<<digitSum(N,D);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Numbers such that difference between number and its digit sum greater than specific value: 11

  1. C++ में सम और विषम अंकों के योग के बीच पूर्ण अंतर के साथ सभी n-अंकीय संख्याओं को प्रिंट करें

    इस समस्या में, हमें एक पूर्णांक n दिया जाता है, और हमें सभी n-अंकीय संख्याओं को इस प्रकार मुद्रित करना होता है कि सम और विषम स्थानों पर संख्या के अंकों के योग के बीच पूर्ण अंतर 1 है। 0 से आगे की संख्याओं को बनाते समय विचार नहीं किया जाता है। पूर्ण अंतर दोनों संख्याओं के बीच का अंतर है जिसका मान एक

  1. न्यूनतम संख्याएं जो N से छोटी या उसके बराबर हों और C++ में योग S के साथ हों

    समस्या कथन 1 से N और एक संख्या S से N नंबर दिए गए हैं। कार्य S को देने के लिए योग की न्यूनतम संख्या को प्रिंट करना है उदाहरण यदि n =7 और s =10 तो न्यूनतम 2 संख्याएँ आवश्यक हैं (9, 1) (8, 2) (7, 3) (6, 4) एल्गोरिदम Answer can be calculated using below formula (S/N) + 1 if { S %N > 0} उदाहरण #inc

  1. C++ में उत्पाद और योग के बीच दिए गए अंतर के साथ N पूर्णांक खोजें

    मान लीजिए कि हमारे पास दो पूर्णांक N और D हैं। हमें N पूर्णांकों का एक सेट खोजना है, जहां उनके योग और उत्पाद के बीच का अंतर D के समान है। मान लीजिए N =3, और डी =5, तो आउटपुट 1, 2, 8 होगा। यहां योग 1 + 2 + 8 =11 है, और उत्पाद 1 * 2 * 8 =16 है, 16 और 11 के बीच का अंतर 5 है। हमें इस समस्या को हल करना