Cho hai số nguyên a, b. Tính tổng không dùng phép + hay -. Ví dụ: a=5, b=7 → 12.
Giải pháp
Sử dụng toán tử bitwise:
- Nếu b = 0 → trả về a.
- Đệ quy: sum(a^b, (a&b)<<1).
Ví dụ (Python)
Lưu ý: mã mẫu dùng C++, logic tương tự.
#include <iostream>
using namespace std;
class Solution {
public:
int getSum(int a, int b) {
return b == 0?a:getSum(a^b, (unsigned int)(a&b)<<1);
}
};
main(){
Solution ob;
cout<<ob.getSum(5,7)<<endl;
} Đầu vào
a = 5 b = 7
Đầu ra
12