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

संख्याओं की संख्या इस प्रकार है कि संख्या और उसके अंकों के योग के बीच का अंतर C++ में L से कम नहीं है

हमें एक संख्या N और दूसरी संख्या L दी गई है। लक्ष्य 1 और N के बीच की उन संख्याओं को खोजना है जिनमें स्वयं संख्या और उसके अंकों का योग L से कम नहीं है।

यदि N=23, L=10 तो ऐसी संख्याओं की संख्या 4 होगी।

23-(2+3)=18, 22-(2+2)=18, 21-(2+1)=18, 20-(2+0)=18.

उपरोक्त सभी संख्याएं शर्त को पूरा करती हैं

लेकिन 19-(1+9)=9 जो L से कम है, इसी तरह 18,17….1.

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

इनपुट - एन=30 एल=19

आउटपुट - संख्याओं की संख्या इस प्रकार है कि उनके अंकों की संख्या और योग के बीच का अंतर L से कम न हो - 1

स्पष्टीकरण − केवल 30 शर्त को पूरा करते हैं, 30-(3+0)=27> 19

इनपुट - एन=123330 एल=5466

आउटपुट - संख्याओं की संख्या इस प्रकार है कि उनके अंकों की संख्या और योग के बीच का अंतर L से कम नहीं है - 6841

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

बाइनरी सर्च का उपयोग करके हम शर्त को पूरा करने वाला पहला नंबर पाएंगे। यदि वह संख्या num है तो num+1 इत्यादि के लिए भी शर्त सही होगी।

यदि कोई वर्तमान मध्य मान इस शर्त को पूरा करता है तो मध्य और अंत के बीच की सभी संख्याएं भी इस शर्त को पूरा करेंगी ताकि हम गिनने के लिए बस अंत-मध्य+1 जोड़ सकें।

  • num और L को लंबे चर के रूप में लें।

  • फंक्शन Digit_sum(LL num) एक संख्या संख्या लेता है और उसके अंकों का योग लौटाता है।

  • प्रारंभिक योग को कुल =0 के रूप में लें।

  • थोड़ी देर के लूप का उपयोग करते हुए, रिमाइंडर num%10 को टोटल में जोड़ें और num को 10 से कम करें। ऐसा num>0 तक करें।

  • अंकों के योग के रूप में कुल लौटाएं।

  • फ़ंक्शन Less_than_L(LL num, LL L) एक संख्या संख्या और एक संख्या L लेता है और संख्याओं की गिनती इस तरह लौटाता है कि उसके अंकों की संख्या और योग के बीच का अंतर L से कम न हो

  • प्रारंभिक गणना 0 के रूप में लें।

  • लूप के दौरान बाइनरी सर्च को लागू करें जहां start=1 और end=num.

  • बीच की संख्या की गणना temp=(start+end)/2 के रूप में करें।

  • यदि अस्थायी और अस्थायी अंकों के योग के बीच का अंतर L से कम नहीं है, तो अस्थायी से बड़ी सभी संख्याएँ भी उसी शर्त को पूरा करेंगी।

  • अस्थायी सहित ऐसी संख्याओं की संख्या num-temp+1 होगी। इसे गिनने के लिए जोड़ें। और end=temp-1 सेट करें।

  • अन्यथा सेट करें start=temp+1.

  • बाइनरी सर्च काउंट के अंत में उनके बीच अंतर वाली संख्याएं होंगी और अंकों का योग एल से कम नहीं होगा

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int Digit_sum(LL num){
   LL total = 0;
   while (num > 0){
      total += num % 10;
      num = num/10;
      z}
   return total;
}
LL Less_than_L(LL num, LL L){
   LL count = 0;
   LL start = 1;
   LL end = num;
   while (start <= end){
      LL temp = (end + start) / 2;
      LL temp_2 = temp - Digit_sum(temp);
      if (temp_2 >= L){
         count = num - temp + 1;
         end = temp - 1;
      }
      else{
         start = temp + 1;
      }
   }
   return count;
}
int main(){
   LL num = 234516;
   LL L = 235;
   cout<<"Count of Numbers such that difference between the number and sum of its digits not
   less than L are: "<< Less_than_L(num, L);
   return 0;
}

आउटपुट

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

Count of Numbers such that difference between the number and sum of its digits not less than L are: 234267

  1. C++ में संख्या को विभाजित करने वाली संख्या में अंकों की संख्या ज्ञात कीजिए

    मान लीजिए एक नंबर दिया गया है। हमें उस संख्या के अंकों की संख्या गिननी है जो संख्या को समान रूप से विभाजित करती है। मान लीजिए कि संख्या 1012 है, परिणाम 3 है। तीन अंक 1, 1 और 2 हैं जो समान रूप से 1012 को विभाजित करते हैं। इसे हल करने के लिए, हम मॉड्यूलस ऑपरेशन का उपयोग करके संख्या के प्रत्येक अंक को

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ का प्रयोग करते हुए x और उसके अंकों का योग दिए गए n के बराबर हो।

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए