समस्या
निम्नलिखित स्थिति पर विचार करें -
n बल्ब हैं जो शुरू में बंद हैं। हम पहले सभी बल्बों को चालू करते हैं। फिर, हम हर दूसरे बल्ब को बंद करते हैं। तीसरे राउंड में, हम हर तीसरे बल्ब को टॉगल करते हैं (अगर यह बंद है तो चालू करते हैं या चालू है तो बंद करते हैं)।
सामान्य रूप से, i-वें राउंड के लिए, हम हर i बल्ब को टॉगल करते हैं। और अंत में n-वें राउंड के लिए, हम केवल अंतिम बल्ब को टॉगल करते हैं।
हमें एक JavaScript फ़ंक्शन लिखना है जो n को एकमात्र इनपुट के रूप में लेता है और n राउंड के बाद कितने बल्ब चालू हैं, यह पता लगाता है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const n = 4;
तो आउटपुट होना चाहिए -
const output = 2;
आउटपुट व्याख्या:
स्टेट सरणी में, 0 बंद को दर्शाता है जबकि 1 चालू को दर्शाता है -
| राउंड | स्टेट |
|---|---|
| 1 | [1, 1, 1, 1, 1] |
| 2 | [1, 0, 1, 0, 1] |
| 3 | [1, 0, 0, 0, 1] |
| 4 | [1, 0, 0, 1, 1] |
| 5 | [1, 0, 0, 1, 0] |
इसलिए पांचवें राउंड के बाद केवल दो बल्ब चालू हैं।
उदाहरण
इसके लिए कोड होगा -
const n = 5;
const findOn = (n = 1) => {
let off = 0;
let on = n;
while(off <= on){
let mid = Math.floor((off + on) / 2);
if(mid * mid > n){
on = mid - 1;
}else{
off = mid + 1;
};
};
return Math.floor(on);
};
console.log(findOn(n));
आउटपुट
कंसोल में आउटपुट होगा -
2