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

C++ में K तक बढ़ाई गई 10 घात से विभाज्य होने वाली किसी संख्या में न्यूनतम निष्कासन

समस्या कथन

दो धनात्मक पूर्णांक N और K दिए हुए हैं। अंकों की न्यूनतम संख्या ज्ञात कीजिए जिन्हें संख्या N से इस प्रकार हटाया जा सकता है कि निकालने के बाद संख्या 10K से विभाज्य हो। प्रिंट -1 अगर असंभव है।

उदाहरण

यदि N =10203027 और K =2 है तो हमें 3 अंक निकालने होंगे। अगर हम 3, 2 और 7 को हटा दें तो संख्या 10200 हो जाती है जो 102 से विभाज्य है

एल्गोरिदम

1. Start traversing number from end. If the current digit is not zero, increment the counter variable, otherwise decrement variable K
2. If K is zero, then return counter as answer
3. After traversing the whole number, check if the current value of K is zero or not. If it is zero, return counter as answer, otherwise return answer as number of digits in N –1
4. If the given number does not contain any zero, return -1 as answer

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getBitsToBeRemoved(int n, int k) {
   string s = to_string(n);
   int result = 0;
   int zeroFound = 0;
   for (int i = s.size() - 1; i >= 0; --i) {
      if (k == 0) {
         return result;
      }
      if (s[i] == '0') {
         zeroFound = 1;
         --k;
      } else {
         ++result;
      }
   }
   if (!k) {
      return result;
   } else if (zeroFound) {
      return s.size() - 1;
   }
   return - 1;
}
int main() {
   int n = 10203027;
   int k = 2;
   cout << "Minimum required removals = " <<
   getBitsToBeRemoved(n, k) << endl;
   return 0;
}

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है

आउटपुट

Minimum required removals = 3

  1. जाँच करें कि क्या C++ में किसी संख्या को x^y (x से घात y तक बढ़ा दिया गया है) के रूप में व्यक्त किया जा सकता है

    यहां हम जांच करेंगे कि क्या हम xy . जैसी किसी संख्या को घात के रूप में प्रदर्शित कर सकते हैं या नहीं। मान लीजिए एक संख्या 125 मौजूद है। इसे 53 . के रूप में दर्शाया जा सकता है . एक अन्य संख्या 91 को किसी पूर्णांक मान की घात के रूप में प्रदर्शित नहीं किया जा सकता है। एल्गोरिदम isRepresentPower(num): B

  1. जाँच करें कि C++ में कोई बड़ी संख्या 20 से विभाज्य है या नहीं

    यहां हम देखेंगे कि किसी संख्या को 20 से विभाज्य कैसे किया जाता है या नहीं। इस मामले में संख्या बहुत बड़ी है। इसलिए हम संख्या को स्ट्रिंग के रूप में रखते हैं। एक संख्या 20 से विभाज्य होगी, जब वह 10 से विभाज्य होगी, और 10 को विभाजित करने के बाद, शेष संख्या 2 से विभाज्य होगी। तो मामला सरल है। यदि अंति

  1. C++ प्रोग्राम किसी संख्या की शक्ति की गणना करने के लिए

    किसी संख्या की घात की गणना x^y के रूप में की जा सकती है जहाँ x संख्या है और y इसकी शक्ति है। उदाहरण के लिए। Let’s say, x = 2 and y = 10    x^y =1024    Here, x^y is 2^10 पुनरावर्ती और गैर-पुनरावर्ती कार्यक्रमों का उपयोग करके किसी संख्या की शक्ति की गणना की जा सकती है। इन