इस समस्या में, आपको N पेंटिंग्स दी गई हैं और हमारे पास m रंग हैं जिनसे हम पेंटिंग्स बना सकते हैं। हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे हम पेंटिंग्स बना सकते हैं ताकि कोई भी दो आसन्न पेंटिंग्स का रंग समान न हो।
प्रोग्राम का आउटपुट बहुत बड़े मानों का हो सकता है और इन मानों को संभालना थोड़ी समस्या है, इसलिए हम इसका उत्तर मानक मॉड्यूलो 109 + 7 में गणना करेंगे।
तरीकों की संख्या ज्ञात करने का सूत्र है:
Ways = m * (m-1)(n-1)
समस्या को समझाने के लिए उदाहरण, इसमें पेंटिंग्स की संख्या n और रंगों की संख्या m की आवश्यकता होगी:
इनपुट
n = 5, m = 6
आउटपुट
3750
उदाहरण
#include <iostream>
#include <math.h>
#define MOD 1000000007
using namespace std;
unsigned long power(unsigned long x, unsigned long y, unsigned long p) {
unsigned long res = 1;
x = x % p;
while (y > 0) {
if (y & 1)
res = (res * x) % p;
y = y >> 1;
x = (x * x) % p;
}
return res;
}
int ways(int n, int m) {
return (int)((power(m - 1, n - 1, MOD) * 1LL * m) % MOD);
}
int main() {
int n = 5, m = 6;
cout << "There are " << ways(n, m) << " ways";
return 0;
}
आउटपुट
There are 3750 ways