কম্পিউটার টিউটোরিয়াল

C++-এ N×৩ গ্রিড রঙিন করা (Number of Ways to Paint N×3 Grid)


n×৩ আকারের গ্রিড রঙিন করতে হবে তিনটি রঙ (লাল, হলুদ, সবুজ) দিয়ে। দুটি আডজাসেন্ট সেল একই রঙ পাবে না। মডুলো ১০^৯+৭।

উদাহরণ: n=1 -> ১২ উপায়।

সমাধানের ধাপসমূহ

  • প্রতি রোয় দুই ধরণের প্যাটার্ন: ১২৩ (সব রঙ আলাদা) এবং ১২১ (প্রথম ও শেষ একই)।
  • প্রথম রোয়: a123=6, a121=6।
  • পরবর্তী রোয়ের জন্য রিকারেন্স:
    • b121 = 3*a121 + 2*a123
    • b123 = 2*a121 + 2*a123
  • উত্তর = a121 + a123।

C++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli mod = 1e9 + 7;

class Solution {
public:
    lli add(lli a, lli b) { return ((a % mod) + (b % mod)) % mod; }
    int numOfWays(int n) {
        lli a123 = 6, a121 = 6, b123, b121;
        for (int i = 2; i <= n; i++) {
            b121 = add(3 * a121, 2 * a123);
            b123 = add(2 * a121, 2 * a123);
            a121 = b121; a123 = b123;
        }
        return add(a123, a121);
    }
};

int main() {
    Solution ob;
    cout << ob.numOfWays(3);
    return 0;
}

ইনপুট

3

আউটপুট

246
  1. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  2. C++-এ N x 3 গ্রিড রঙ করার পদ্ধতির সংখ্যা

  3. C++-এ أغলি নাম্বার II

  4. C++-এ বেল নাম্বার - সেট পার্টিশনের الطرق সংখ্যা