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

एक अंक के रूप में 0 के साथ सकारात्मक पूर्णांकों की गणना करें और सी ++ में अधिकतम 'डी' अंक

हमें एक संख्या d दी गई है जो अंकों की संख्या को दर्शाती है। लक्ष्य 0 के साथ एक अंक के रूप में सकारात्मक पूर्णांकों की गिनती का पता लगाना है और अधिकतम डी अंक हैं। सभी 1 अंक, 2 अंक, 3 अंक… .d अंक सकारात्मक संख्याओं की गणना करें जिनमें कम से कम एक 0 हो।

हम सबसे पहले उन संख्याओं की संख्या ज्ञात करेंगे जिनमें कम से कम एक 0 के साथ d अंक हैं। मान लें कि d=3 है। कम से कम एक 0 वाली 3-अंकीय संख्या बनाने के संभावित तरीके हैं -

एक अंक के रूप में 0 के साथ सकारात्मक पूर्णांकों की गणना करें और सी ++ में अधिकतम  डी  अंक

Here d1 can have 1 to 9 : 9 ways
d2 can have 0-9 : 10 ways
d3 can have 0-9 : 10 ways
Total numbers possible: 9 x 10 x 10 = 9 x 102
For d digits, count of numbers: 9 x 10d-1
For d digits, numbers without any 0 are : 9d
Total numbers having d digits with at least one 0 = 9 x 10d-1 - 9d = 9 x ( 10d-1 - 9d-1 )

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

इनपुट - डी=4

आउटपुट - एक अंक के रूप में 0 और अधिकतम 'डी' अंक वाले धनात्मक पूर्णांकों की संख्या है - 2619

स्पष्टीकरण − कम से कम एक 0 के साथ x अंकों की संख्या −

1 digit numbers : 0
2 digit numbers : 9
3 digit numbers : 171
4 digit numbers: 2439
Total= 9+171+2439 = 2619

इनपुट - d=1

आउटपुट - एक अंक के रूप में 0 और अधिकतम 'डी' अंक वाले धनात्मक पूर्णांकों की संख्या है - 0

स्पष्टीकरण − 1 से 9 तक किसी भी संख्या में अंक के रूप में 0 नहीं होता है।

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

हम दो दृष्टिकोणों का उपयोग करेंगे। लूप के लिए a का उपयोग करके पहला अनुभवहीन दृष्टिकोण। 1 अंक से d अंक तक चलना शुरू करें और ऊपर वर्णित सूत्र का उपयोग करके संख्याओं की गणना करें। गिनने के लिए लौटाया गया मान जोड़ें।

  • अंकों के लिए पूर्णांक d लें।

  • फंक्शन Total_count(int d)) कई अंक d लेता है और d अंकों के साथ कम से कम एक 0 वाले अंकों की संख्या देता है।

  • ऐसी संख्याओं की गणना करें जैसे temp=9*(pow(10,d-1) - pow(9,d-1));

  • वापसी अस्थायी।

  • फ़ंक्शन max_d(int d) d अंकों की अधिकतम संख्या लेता है और कम से कम एक 0 वाले d अंकों तक की संख्या देता है।

  • 1 अंकों की संख्या से शुरू होकर 2 और इसी तरह d तक लूप का उपयोग करके ट्रैवर्स करें।

  • प्रत्येक d के लिए कुल संख्या (i) के रूप में संख्याओं की गणना करें। इसे गिनने के लिए जोड़ें।

  • अंत में हमें कुल गिनती मिल जाएगी।

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

कुशल दृष्टिकोण

इस दृष्टिकोण में, हम उपरोक्त गणनाओं के लिए गठित G.P को देखकर गणना की गणना करेंगे।

Solution is 9 x (10d-1 - 9d-1)
= 9 x (10d - 1)- 9 x (9d-1)
= 9 x (10i - 1) - 9 x (9i - 1) ( 1<=i<=d )
= g.p 1 - g.p 2
= 9x(10d-1)/(10-1) - 9x(9d-1)/(9-1)
= (10d-1)- (9/8)*(9d-1)
  • d को अंकों की अधिकतम संख्या के रूप में लें।

  • फ़ंक्शन max_d(int d) अंकों की अधिकतम संख्या d लेता है और कम से कम एक 0 वाले d अंकों तक की संख्या देता है।

  • उपरोक्त सूत्र का उपयोग करके temp_1 की गणना 9*((pow(10,d)-1)/9) के रूप में करें।

  • temp_2 की गणना 9*((pow(9,d)-1)/8) के रूप में करें।

  • गिनती सेट करें =temp_1 - temp_2.

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

उदाहरण (बेवकूफ दृष्टिकोण)

#include<bits/stdc++.h>
using namespace std;
int total_count(int d){
   int temp = 9*(pow(10,d-1) - pow(9,d-1));
   return temp;
}
int maximum_d(int d){
   int count = 0;
   for (int i=1; i<=d; i++){
      count = count + total_count(i);
   }
   return count;
}
int main(){
   int d = 5;
   cout<<"Count of positive integers with 0 as a digit and maximum 'd' digits are: "<<maximum_d(d) << endl;
   return 0;
}

आउटपुट

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

Count of positive integers with 0 as a digit and maximum 'd' digits are: 33570

उदाहरण (कुशल दृष्टिकोण)

#include<bits/stdc++.h>
using namespace std;
int maximum_d(int d){
   int temp_1 = 9*((pow(10,d)-1)/9);
   int temp_2 = 9*((pow(9,d)-1)/8);
   int count = temp_1 - temp_2;
   return count;
}
int main(){
   int d = 4;
   cout<<"Count of positive integers with 0 as a digit and maximum 'd' digits are: "<<maximum_d(d) << endl;
   return 0;
}

आउटपुट

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

Count of positive integers with 0 as a digit and maximum 'd' digits are: 2619

  1. 0 से X को बिटवाइज़ और C++ में बदलने के लिए अधिकतम चरण

    इस समस्या में, हमें एक पूर्णांक X दिया जाता है। हमारा कार्य 0 से X में बदलने के लिए उठाए गए चरणों की कुल संख्या ज्ञात करना है। मान्य परिवर्तन - ए से बी में एक परिवर्तन होने पर एक कदम गिना जाता है। परिवर्तन होने की शर्त ए! =बी और ए और बी =ए (और बिटवाइज और है)। तो, 1 कदम ए से बी में बदल रहा है और हमे

  1. अधिकतम धनात्मक पूर्णांक C से विभाज्य है और C++ में [A, B] श्रेणी में है

    यहां हम एक दिलचस्प समस्या देखेंगे। आइए मान लें कि हमारे पास तीन पूर्णांक ए, बी, और सी हैं। हमें एक न्यूनतम पूर्णांक एक्स ढूंढना है, जैसे कि एक्स मॉड सी =0, और एक्स [ए, बी] की सीमा में नहीं है। यदि A, B और C के मान क्रमशः 5, 10 और 4 हैं, तो X का मान 4 होगा। हल प्राप्त करने के लिए हमें इन चरणों का पाल

  1. C++ में दिए गए उत्पाद के साथ N पूर्णांकों की अधिकतम GCD

    मान लीजिए कि हम दो पूर्णांक N और P हैं। P, N अज्ञात पूर्णांकों का गुणनफल है। हमें उन पूर्णांकों का अधिकतम संभव GCD ज्ञात करना है। मान लीजिए एन =3, और पी =24, तो अलग-अलग समूह होंगे जैसे {1, 1, 24}, {1, 2, 12}, {1, 3, 8}, {1, 4, 6}, {2 , 2, 6}, {2, 3, 4}। जीसीडी हैं:1, 1, 1, 1, 2, 1. तो उत्तर यहां 2 ह