इस समस्या में, हमें दो पूर्णांक 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