কম্পিউটার

এন পেইন্টিংগুলি আঁকার উপায়গুলি যাতে সংলগ্ন পেইন্টিংগুলিতে 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. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. হ্যান্ডশেক যা C++ এ অতিক্রম করে না

  3. C++ এ N × 3 গ্রিড পেইন্ট করার উপায়ের সংখ্যা

  4. C++ ব্যালেন্সড এক্সপ্রেশন যেমন প্রদত্ত পজিশনে ওপেনিং ব্র্যাকেট থাকে