Trích dẫn câu hỏi này trên SO (Spoiler alert!):
Câu hỏi này đã được hỏi trong một cuộc phỏng vấn của Oracle.
Làm thế nào bạn có thể chia một số cho 3 mà không sử dụng toán tử *, /, +, -,%,?
Số có thể được ký hoặc không dấu.
Nhiệm vụ có thể giải quyết được, nhưng hãy xem liệu bạn có thể viết mã ngắn nhất không.
Quy tắc:
- Thực hiện phép chia số nguyên cần thiết (
/3
) - Không sử dụng các nhà khai thác không dựa trên văn bản
*
,/
,+
,-
, hoặc%
(hoặc tương đương của họ, chẳng hạn như__div__
hayadd()
). Điều này cũng áp dụng cho các toán tử tăng và giảm, nhưi++
hoặci--
. Sử dụng các toán tử để nối chuỗi và định dạng là OK. Sử dụng các ký tự này cho các toán tử khác nhau, chẳng hạn như toán tử đơn nguyên-
cho các số âm hoặc*
để biểu thị một con trỏ trong C cũng được. - Giá trị đầu vào có thể lớn tùy ý (bất cứ hệ thống nào của bạn có thể xử lý), cả tích cực và tiêu cực
- Đầu vào có thể trên STDIN hoặc ARGV hoặc nhập bất kỳ cách nào khác
- Tạo mã ngắn nhất bạn có thể làm như trên