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

C++ में N पेंटिंग्स को रंगने के तरीके ताकि आसन्न पेंटिंग्स का रंग समान न हो

इस समस्या में, हमें दो पूर्णांक n और m दिए गए हैं, जहां n पेंटिंग्स की संख्या है और m उपलब्ध रंगों की संख्या है। हमारा कार्य एक ऐसा प्रोग्राम बनाना है जो उन तरीकों की कुल संख्या ज्ञात करे जिनसे हम पेंटिंग्स को इस तरह रंग सकते हैं कि कोई दो लगातार पेंटिंग्स का रंग समान न हो।

उदाहरण

इनपुट

n = 3, m = 3

आउटपुट

12

व्याख्या

P1 P2 P3
C1 C2 C3
C1 C3 C2
C1 C2 C1
C1 C3 C1
C2 C1 C2
C2 C3 C2
C2 C1 C3
C2 C3 C1
C3 C1 C3
C3 C2 C3
C3 C1 C2
C3 C2 C1

इस समस्या को हल करने के लिए, हम सभी n पेंटिंग्स को m रंगों से रंग सकते हैं, अब अगली पेंटिंग को अंतिम पेंटिंग को रंगने के लिए उपयोग किए गए रंग को छोड़कर n-1 रंगों का उपयोग करके रंगा जा सकता है। तो, तरीकों की कुल संख्या है:

n * (m-1)^(n-1)

हमारे समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम:

उदाहरण

#include <iostream>
#define modd 1000000007
using namespace std;

unsigned long calcPower(unsigned long base, unsigned long power, unsigned long p) {
    unsigned long result = 1;
    base = base % p;
    while (power > 0) {
        if (power & 1)
            result = (result * base) % p;
        power = power >> 1;
        base = (base * base) % p;
    }
    return result;
}

int colorPainting(int n, int m) {
    return calcPower(m - 1, n - 1, modd) * m % modd;
}

int main() {
    int n = 5, m = 7;
    cout << "दिए गए पेंटिंग्स को रंगने के तरीकों की संख्या: " << colorPainting(n, m);
    return 0;
}

आउटपुट

दिए गए पेंटिंग्स को रंगने के तरीकों की संख्या: 9072
  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. C++ में नॉन-क्रॉसिंग हैंडशेक्स C++ में नॉन-क्रॉसिंग हैंडशेक्स

    मान लीजिए हमारे पास लोगों की एक सम संख्या n है जो एक वृत्त के चारों ओर खड़े हैं और प्रत्येक व्यक्ति किसी और से हाथ मिलाता है, ताकि कुल n/2 हैंडशेक हों। हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे ये हैंडशेक हो सकते हैं ताकि कोई भी हैंडशेक क्रॉस न करे। उत्तर बहुत बड़ा हो सकता है इसलिए उत्तर को 10^9

  1. C++ में N×3 ग्रिड को रंगने के तरीकों की संख्या C++ में N×3 ग्रिड को रंगने के तरीकों की संख्या

    समस्या विवरण मान लीजिए हमारे पास n x 3 आकार का एक ग्रिड है और हम ग्रिड के प्रत्येक सेल को तीन रंगों में से ठीक एक से रंगना चाहते हैं। रंग हैं लाल, पीला या हरा। अब एक प्रतिबंध है कि कोई भी दो आसन्न सेल का रंग समान नहीं होना चाहिए। हमारे पास n ग्रिड की पंक्तियों की संख्या है। हमें उन तरीकों की संख्या