ধরুন একটি ঘরে n টি বাতি থাকে যা প্রাথমিকভাবে অন থাকে এবং দেওয়ালে ৪টি বাটন রয়েছে। বাটনগুলোর দিকে ঠিক m بار অজানা অপারেশন করার পরে, আমাদের n টি বাতির কত ধরনের স্ট্যাটাস হতে পারে তা ফেরত দিতে হবে। n টি বাতিকে [1, 2, 3 ..., n] নম্বর দিয়ে লেবেল করা হয়েছে, এই ৪টি বাটনের ফাংশন নিম্নরূপ −
- সব বাতি ফ্লিপ করুন।
- সম সংখ্যা वाली বাতি ফ্লিপ করুন।
- বিজোড় সংখ্যা वाली বাতি ফ্লিপ করুন।
- (3k + 1) নম্বর वाली বাতি ফ্লিপ করুন, k = 0, 1, 2, ...
এখন যদি n = 3 এবং m = 1 হয়, তবে ৪টি অপারেশন হবে, এগুলি হল [off, on, off], [on, off, on], [off, off, off], [off, on, on]
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −
- যদি n ০ হয় বা m ০ হয়, তবে ১ ফেরত দিন
- যদি n ১ হয়, তবে ২ ফেরত দিন
- যদি n ২ হয়, তবে m ১ হলে ৩ ফেরত দিন, অন্যথায় ৪
- যদি m ১ হয়, তবে ৪ ফেরত দিন
- যদি m ২ হয়, তবে ৭ ফেরত দিন, অন্যথায় ৮।
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: int flipLights(int n, int m) { if (m == 0 || n == 0) return 1; if (n == 1) return 2; if (n == 2) return m == 1? 3:4; if (m == 1) return 4; return m == 2? 7:8; } }; main(){ Solution ob; cout << (ob.flipLights(3, 1)); }ইনপুট
3 1
আউটপুট
4