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

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

मान लीजिए कि हमारे पास एक संख्या n है। हम इनमें से किसी एक ऑपरेशन को कई बार मनमाने ढंग से करते हैं -

  • n को n/2 से बदलें जब n 2 से विभाज्य हो

  • n को 2n/3 से बदलें जब n 3 से विभाज्य हो

  • n को 4n/5 से बदलें जब n 5 से विभाज्य हो

हमें नंबर 1 बनाने के लिए आवश्यक न्यूनतम चालों की संख्या गिननी होगी। यदि संभव नहीं है, तो -1 लौटें।

इसलिए, यदि इनपुट n =10 की तरह है, तो आउटपुट 4 होगा, क्योंकि 5 प्राप्त करने के लिए n/2 का उपयोग करें, फिर 4 प्राप्त करने के लिए 4n/5, फिर 2 प्राप्त करने के लिए n/2 फिर से प्राप्त करने के लिए n/2 का उपयोग करें। 1.

कदम

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

m := 0
while n is not equal to 1, do:
   if n mod 2 is same as 0, then:
      n := n / 2
      (increase m by 1)
   otherwise when n mod 3 is same as 0, then:
      n := n / 3
      m := m + 2
   otherwise when n mod 5 is same as 0, then:
      n := n / 5
      m := m + 3
   Otherwise
      m := -1
      Come out from the loop
return m

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int m = 0;
   while (n != 1) {
      if (n % 2 == 0) {
         n = n / 2;
         m++;
      }
      else if (n % 3 == 0) {
         n = n / 3;
         m += 2;
      }
      else if (n % 5 == 0) {
         n = n / 5;
         m += 3;
      }
      else {
         m = -1;
         break;
      }
   }

   return m;
}
int main() {
   int n = 10;
   cout << solve(n) << endl;
}

इनपुट

10

आउटपुट

4

  1. सी ++ प्रोग्राम डोडेकैगन की संख्या गिनने के लिए जिसे हम आकार डी बना सकते हैं

    मान लीजिए कि हमारे पास एक संख्या d है। विचार करें कि अनंत संख्या में वर्गाकार टाइलें हैं और भुजाओं की लंबाई के साथ नियमित त्रिकोणीय टाइलें हैं। हमें यह पता लगाना है कि इन टाइलों का उपयोग करके हम कितने तरीकों से नियमित डोडेकागन (12-पक्षीय बहुभुज) बना सकते हैं। यदि उत्तर बहुत बड़ा है, तो परिणाम मोड 99

  1. सी ++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए संचालन की संख्या की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। अब एक ऑपरेशन पर विचार करें जहां हम एक सेल लेते हैं और इसे और उसके सभी पड़ोसी कोशिकाओं (ऊपर, नीचे, बाएं, दाएं) को फ्लिप करते हैं। हमें आवश्यक संक्रियाओं की न्यूनतम संख्या ज्ञात करनी होगी जैसे कि मैट्रिक्स में केवल 0s हों। अगर कोई समाधान नहीं है, तो -1 लौ

  1. पायथन में लक्ष्य बनाने के लिए कॉलम फ्लिप करने के लिए न्यूनतम संख्या में संचालन की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास समान पंक्तियों और स्तंभों के साथ एक मैट्रिक्स M और एक लक्ष्य मैट्रिक्स T है। अब मान लीजिए एक ऑपरेशन जहां हम मैट्रिक्स में एक विशेष कॉलम को फ्लिप करते हैं ताकि सभी 1s को 0s में बदल दिया जाए और सभी 0s को 1s में बदल दिया जाए। इसलिए यदि हम मैट्रिक्स पंक्तियों को मुफ्त में पुन:व्यव