मान लीजिए कि n रोशनी वाला एक कमरा है जो शुरू में चालू है और दीवार पर 4 बटन मौजूद हैं। बटनों के लिए बिल्कुल अज्ञात संचालन करने के बाद, हमें यह वापस करने की आवश्यकता है कि एन रोशनी की कितनी अलग-अलग प्रकार की स्थिति हो सकती है। तो मान लें कि n रोशनी को संख्या [1, 2, 3 ..., n] के रूप में लेबल किया गया है, इन 4 बटनों के कार्य इस प्रकार हैं -
- सभी लाइटों को पलटें।
- सम संख्याओं के साथ फ़्लिप लाइट।
- विषम संख्याओं के साथ फ़्लिप लाइट।
- फ्लिप लाइट (3k + 1) संख्याओं के साथ, k =0, 1, 2, ...
अब अगर n =3 और m =1, तो 4 ऑपरेशन होंगे, ये हैं, [ऑफ, ऑन, ऑफ], [ऑन, ऑफ, ऑन], [ऑफ, ऑफ, ऑफ], [ऑफ, ऑन, ऑन ]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अगर n 0 है या m 0 है, तो 1 लौटाएं
- अगर n 1 है, तो 2 लौटाएं
- यदि n 2 है, तो 3 लौटाएं, जब m 1 हो, अन्यथा 4 लौटाएं
- अगर मी 1 है, तो 4 लौटाएं
- अगर मी 2 है, तो 7 लौटाएं, नहीं तो 8 लौटाएं।
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#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