การอ้างอิงคำถามนี้ใน SO (การแจ้งเตือนสปอยเลอร์!):
คำถามนี้ถูกถามในการสัมภาษณ์ Oracle
คุณจะหารจำนวนด้วย 3 โดยไม่ใช้ *, /, +, -,%, โอเปอเรเตอร์ได้อย่างไร
หมายเลขอาจถูกเซ็นชื่อหรือไม่ได้ลงนาม
งานสามารถแก้ไขได้ แต่ดูว่าคุณสามารถเขียนรหัสที่สั้นที่สุด
กฎ:
- ดำเนินการหารจำนวนเต็มที่ต้องการ(
/3
) - ห้ามใช้ในผู้ประกอบการที่ไม่ใช่ข้อความ-based
*
,/
,+
,-
หรือ%
(หรือเทียบเท่าของพวกเขาเช่น__div__
หรือadd()
) นอกจากนี้ยังนำไปใช้ในการเพิ่มและ decrementing ผู้ประกอบการเหมือนหรือi++
i--
การใช้ตัวดำเนินการสำหรับการต่อข้อมูลสตริงและการจัดรูปแบบนั้นก็โอเค การใช้อักขระเหล่านี้สำหรับโอเปอเรเตอร์ต่าง ๆ เช่น-
โอเปอเรเตอร์unary สำหรับจำนวนลบหรือ*
เพื่อแทนตัวชี้ใน C ก็โอเคเช่นกัน - ค่าอินพุตอาจใหญ่มาก (สิ่งที่ระบบของคุณสามารถจัดการได้) ทั้งบวกและลบ
- อินพุตอาจเป็น STDIN หรือ ARGV หรือป้อนด้วยวิธีอื่น
- สร้างรหัสที่สั้นที่สุดที่คุณสามารถทำได้ด้านบน