面白いA+B

2570 ワード


回転:http://www.cnblogs.com/litstrong/archive/2011/05/19/2051516.html
a+bを計算して、-、*、/、^で足し算を実現して、&で進数を実現して、コードは以下の通りで、複雑度のlogレベルの、面白いですね。
 
 
 
 1 #include <iostream>

 2 #include <string>

 3 #include <queue>

 4 #include <complex>

 5 using namespace std; 

 6 int go(int a, int b)

 7 { 

 8     int sum = a ^ b; 

 9     int jin = a & b;   

10     if(jin) 

11         return go(sum, jin << 1);  

12     else  

13         return sum;

14 }

15 int main()

16 { 

17     int a, b; 

18     cin >> a >> b; 

19     cout << go(a, b);

20 }