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

C++ में किसी संख्या को 3 से विभाज्य बनाने के लिए हटाए जाने वाले अंकों की संख्या

आपको स्ट्रिंग में एक नंबर दिया गया है। आपको 3 से विभाज्य बनाने के लिए कितने अंकों को निकालने की आवश्यकता है, इसका पता लगाने की आवश्यकता है।

हम अधिकतम 2 अंकों को हटाकर एक संख्या को विभाज्य बनाते हैं। इसलिए, इसे 3 से विभाज्य बनाने के लिए हटाए जाने वाले अंकों की अधिकतम संख्या 2 है।

आइए कुछ उदाहरण देखें।

इनपुट

92

आउटपुट

1

हम इसे 3 से विभाज्य बनाने के लिए 2 को हटा सकते हैं।

इनपुट

999

आउटपुट

0

दी गई संख्या स्वयं 3 से विभाज्य है।

एल्गोरिदम

  • संख्या को स्ट्रिंग में प्रारंभ करें।

  • संख्या का योग ज्ञात कीजिए।

  • अगर योग 3 से विभाज्य है, तो 0. . लौटाएं

  • यदि योग 3 से विभाज्य नहीं है और संख्या की लंबाई 1 है, तो हम इसे 3 से विभाज्य नहीं बना सकते। वापसी -1

  • संख्या पर पुनरावृति करें।

    • संख्या में से एक अंक निकालें और विभाज्यता की जांच करें।

    • अगर ऊपर दी गई शर्त पूरी होती है, तो 1. return लौटाएं

  • संख्या की लंबाई फिर से जांचें। अगर लंबाई 2, . है फिर -1. return पर लौटें

  • अन्य वापसी 2.

कार्यान्वयन

C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है

#include <bits/stdc++.h>
using namespace std;
int getNumSum(string n) {
   int len = n.length(), sum = 0;
   for (int i = 0; i < len; i++) {
      sum += (int)n[i];
   }
   return sum;
}
int getDigitsCount(string num) {
   int n = num.length();
   int sum = getNumSum(num);
   if (sum % 3 == 0) {
      return 0;
   }
   if (n == 1) {
      return -1;
   }
   for (int i = 0; i < n; i++) {
      int currentDigit = num[i] - '0';
      if (sum % 3 == currentDigit % 3) {
         return 1;
      }
   }
   if (n == 2) {
      return -1;
   }
   return 2;
}
int main() {
   string num = "7536836";
   cout << getDigitsCount(num) << endl;
   return 0;
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

1

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

    यहां हम एक प्रोग्राम देखेंगे, जो यह जांच सकता है कि कोई संख्या 23 से विभाज्य है या नहीं। मान लीजिए एक संख्या 1191216 दी गई है। यह 23 से विभाज्य है। विभाज्यता जांचने के लिए हमें इस नियम का पालन करना होगा - हर बार संख्या/छंटनी की गई संख्या का अंतिम अंक निकालें छोटी संख्या में 7 * (पिछली गणना की

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

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

  1. A में N अंक इस प्रकार जोड़ें कि वह C++ में प्रत्येक जोड़ के बाद B से विभाज्य हो?

    यहां हम देखेंगे कि एन अंकों को जोड़कर एक संख्या ए कैसे उत्पन्न की जाती है, और प्रत्येक चरण में नए अंक जोड़ते समय यह दूसरी संख्या बी से विभाज्य हो जाएगा। आइए विचार करें कि हम 4 जोड़कर 5 अंकों की संख्या बनाने जा रहे हैं। इसके साथ अतिरिक्त अंक। हम 7 से विभाज्यता की जांच करेंगे। संख्या 8 से शुरू होगी। त