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 होगा, क्योंकि n/2 का उपयोग करके 5 प्राप्त करें, फिर 4n/5 से 4 प्राप्त करें, फिर n/2 फिर से 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 के डोडेकागन बनाने के तरीकों की संख्या गिनने के लिए C++ प्रोग्राम आकार d के डोडेकागन बनाने के तरीकों की संख्या गिनने के लिए C++ प्रोग्राम

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

  1. C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम

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

  1. - पायथन में कॉलम फ्लिप करके टारगेट मैट्रिक्स बनाने के लिए न्यूनतम ऑपरेशन गिनने का प्रोग्राम

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