मान लीजिए एक कमरे में n बल्ब हैं जो शुरू में चालू हैं और दीवार पर 4 बटन हैं। बटनों पर ठीक m अज्ञात संचालन करने के बाद, हमें n बल्बों की कितनी अलग-अलग स्थितियां हो सकती हैं, यह लौटाना है। 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, तो m = 1 होने पर 3 लौटाएं, अन्यथा 4 लौटाएं
- यदि m = 1, तो 4 लौटाएं
- यदि m = 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;
}
};
int main(){
Solution ob;
cout << (ob.flipLights(3, 1));
}
इनपुट
3 1
आउटपुट
4