এই সমস্যায়, আমাদের দুটি পূর্ণসংখ্যা 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