ধরি আমাদের একটি গ্রিড আছে যার আকার n x 3 এবং আমরা গ্রিডের প্রতিটি কক্ষকে তিনটি রঙের যেকোনো একটি দিয়ে রঙ করব। রঙগুলো হল লাল (Red), হলুদ (Yellow) এবং সবুজ (Green)।
এখানে একটি শর্ত আছে: কোনো দুটি আঁচবিক কক্ষের রঙ একই হতে পারবে না। গ্রিডের n টি সারি আছে। আমাদের এই গ্রিড রঙ করার পদ্ধতির সংখ্যা বের করতে হবে। উত্তর বড় হলে 10^9 + 7 দিয়ে মডুলো নেওয়া হবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় 1, তবে আউটপুট হবে 12।

সমাধানের ধাপসমূহ
- m = 10^9 + 7
add()ফাংশন সংজ্ঞায়িত করা: এটি a, b নিবে এবং ((a mod m) + (b mod m)) mod m ফেরত দেবে।- মেইন মেথড থেকে:
- a123 := 6, a121 = 6
- i = 2 থেকে n পর্যন্ত লুপ:
- b121 := add(3 * a121, 2 * a123)
- b123 := add(2 * a121, 2 * a123)
- a121 := b121
- a123 := b123
- add(a123, a121) ফেরত দেবে।
প্রোগ্রাম উদাহরণ
#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;
lli 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));
}
ইনপুট
3
আউটপুট
246