Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวสลับหลอดไฟใน C++


สมมติว่ามีหลอดไฟ n ดวงที่ปิดในตอนแรก ก่อนอื่นเราเปิดหลอดไฟทั้งหมด จากนั้นเราจะปิดหลอดไฟทุก ๆ วินาที ในรอบที่สาม เราสลับทุกหลอดที่สาม (เปิดหากปิดหรือปิดหากเปิดอยู่) ในทำนองเดียวกัน สำหรับรอบที่ i เราสลับทุกหลอด i สำหรับรอบที่ n เราจะสลับเฉพาะหลอดสุดท้ายเท่านั้น ดังนั้นเราต้องหาจำนวนหลอดไฟที่เปิดอยู่หลังจาก n รอบ ดังนั้นหากอินพุตเป็น 3 ผลลัพธ์จะเป็น 1 เนื่องจาก −

  • ตอนแรก หลอดไฟสามดวง [ปิด, ปิด, ปิด].
  • หลังจากรอบแรก หลอดไฟทั้งสามจะ [on, on, on].
  • หลังจากรอบที่ 2 หลอดไฟทั้งสามจะ [เปิด ปิด เปิด]
  • หลังจากรอบที่ 3 หลอดไฟทั้งสามจะ [เปิด ปิด ปิด]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ขั้นตอนนี้ตรงไปตรงมา เราต้องหาสแควร์รูทของ n แล้วย้อนกลับ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int bulbSwitch(int n) {
      return sqrt(n);
   }
};
main(){
   Solution ob;
   cout << (ob.bulbSwitch(3));
}

อินพุต

3

ผลลัพธ์

1