lintcode第一題 a+b問題



給出兩個整數a和b, 求他們的和, 但不能使用 +等數學運算符。


思路:看了搜索引擎上各位大神的思路,總結了一下,是需要用到二進制的計算


按1+2來說

0001

0010

則a+b就可以是a|b,那OK,如果有進位該怎麼算

如果忽略進位的話

a+b可以是a^b

進位表示爲a&b<<1


綜合以上三步

算法如下

int aplusb(int a ,int b){

      int c=0,d=0;

      while((a&b) !=0);{

              c=a^b;

              d=(a&b)<<1;

              a=c;

              b=d;}

}

return a|b;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章