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

एन पेंटिंग्स को पेंट करने के तरीके जैसे कि आसन्न पेंटिंग्स में सी ++ में समान रंग नहीं हैं

इस समस्या में, हमें दो पूर्णांक 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<<"The number of ways to color the given paintings is : "<<colorPainting(n, m);
   return 0;
}

आउटपुट

The number of ways to color the given paintings is : 9072

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

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

  1. हैंडशेक जो C++ में क्रॉस नहीं करते हैं

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

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

    मान लीजिए कि हमारे पास आकार n x 3 का ग्रिड है और हम ग्रिड के प्रत्येक सेल को तीन रंगों में से एक के साथ पेंट करना चाहते हैं। रंग लाल, पीला या हरा हैं। अब एक बाधा है कि दो आसन्न कोशिकाओं का रंग समान नहीं है। हमारे पास ग्रिड की पंक्तियों की संख्या n है। हमें यह पता लगाना है कि हम इस ग्रिड को कितने तरी