এই সমস্যাতে আপনাকে N টি পেইন্ট এবং M টি রঙ দেওয়া আছে। আপনাকে এমনভাবে পেইন্ট করতে হবে যাতে দুটি সংলগ্ন পেইন্ট একই রঙের না হয়। প্রোগ্রামের আউটপুট খুব বড় হতে পারে, তাই আমরা স্ট্যান্ডার্ড মডুলো ১০9 + ৭ ব্যবহার করব। পেইন্ট করার উপায়ের সংখ্যা বের করার সূত্র:
Ways = n*(m-1)^(n-1)
উদাহরণ: ইনপুট n = 5, m = 6 → আউটপুট ৩৭৫০।
উদাহরণ
#include <iostream> #include<math.h> #define modd 1000000007 using namespace std; unsigned long find(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 find(m - 1, n - 1, modd) * m % modd; } int main() { int n = 5, m = 6; cout<<"There are"<<ways(n, m)<<"ways"; return 0; }আউটপুট
There are 3750 ways