分析:1.首先我們想到的方法肯定是直接使用「+」等運算子,例如return a+b,如果直接使用算術運算子,那麼這道題就沒有任何意義了。
2.大家都知道咋們鍵入的一系列指令、資料等最終都會被計算機轉化為對應的二進位制資料來識別,所以除了直接使用算術運算子,還有一種方法就是基於二進位制資料使用位運算。通常情況下,位運算比算術運算要快。
位運算有很多種比如「與」,「或」,「非」,「異或」,「左移」,「右移」等,那麼如何選用合適的位運算子以達到"+"的功能呢?
舉例說明:a=9,b=3,a+b位運算的過程:
(1)首先,由圖可以看出 1+0 = 1,0+0=0,1+1=0,很明顯這屬於「異或『操作,即不同為1,相同為0。
(2)然後,考慮進製,進製是在1+1時產生,即就是」與「和」左移「操作。
(3)最後,何時結束呢?不需要再進製的時候,也就是」與「的結果為0時結束。
最長AB子串 LintCode
描述 給你乙個只由字母 a 和 b 組成的字串s,找乙個最長的子串,要求這個子串裡面 a 和 b 的數目相等,輸出該子串的長度。這個子串可以為空。s的長度n滿足 2 n 1000000。樣例 給定s abaaabbba 返回8。解釋 子串 s 0,7 和子串 s 1,8 滿足條件,長度為 8。給定s...
約瑟夫問題直接求取結果的思路
本人比較笨,約瑟夫問題的求解方法想了好久才想通,在這裡留一篇文章,記錄一下。約瑟夫問題 n個人,數m,列出順序。1,用演算法模擬數數過程,通過乙個乙個的排除,最後得到最終的結果 首先解決思路問題,每次數數m個,一共數n次,所以一共經過n m次,然後定義乙個int t,用來算作每個人報數的時候報出的數...
A B 尾數不等a b問題
problem description 讀入兩個小於 10000 的正整數a和 b,計算 a b。需要注意的是 如果a和 b的末尾 k 不超過 8 位數字相同,請直接輸出 1。input 測試輸入包含若干測試用例,每個測試用例佔一行,格式為 a b k 相鄰兩數字有乙個空格間隔。當a和 b同時為 0...