這是乙個面試很喜歡問的問題,也不算很複雜。
要把a,b兩個很大的數(超過了long long)的表示範圍,相加並得出結果。
應該如何做?
簡單,需要掌握陣列,字串等知識,但容易出錯。
假設a=12345 b=56789;由於a,b太長了,這裡只取前五位說明:
接收應該用2個字串陣列來接收a,b。
儲存a=「12345」 -> [5,4,3,2,1]
b=「56789」 -> [9,8,7,6,5]
為什麼要倒著放呢?因為這樣a+b如果溢位了,可以往後面繼續進製。
但還有個問題:我們不知道這個數字是幾位的。因此可以這樣:
a:[5,5,4,3,2,1]
b:[5,9,8,7,6,5]
相加直接把a和b從第一位加到第五位存到c裡面。
c:[5,14,12,10,8,6]
處理進製
如果c中元素有大於等於10的,那就把其減去10,然後對右邊的元素+1,從左到右處理。注意最後一位要特殊處理,因為總長度要+1了。
c:[5,4,3,1,9,6]
輸出記得我們是倒著存的,輸出也要倒著輸出:長度不用輸出
c->69134
檢查一下:12345+56789=69134
#include
#include
using
namespace std;
int num1[
100]
,num2[
100]
,sum[
100]
;char s1[
100]
,s2[
100]
;int
main()
for(
int i =
0,j = num2[0]
;j >
0;i++
,j--
) sum[0]
=max
(num1[0]
,num2[0]
);for(
int i =
1;i <= sum[0]
;i++
)//處理進製
for(
int i =
1;i <= sum[0]
; i++)}
}//倒著輸出
for(
int i = sum[0]
;i >
0;i--
) cout
}
可以嘗試解決一下這個問題: 和海王一起從零刷題之1 回形陣列
這個oj需要登入才能使用,不過裡面的題都還挺好的,從簡單到複雜,分門別類。感興趣的可以用一用,不感興趣可以直接看下面。簡單,適合學完基礎語法的同學,只需要了解迴圈,陣列等知識。輸入乙個正整數n,輸出n n的回形方陣。例如,n 5時,輸出 111 1112 2211 2321 1222 1111 11...
和融躍一起零基礎學習FRM
frm被稱為是 無法自學通過 的考試,對於零基礎考生來說,首先就必須要對自己的備考進行規劃,留下充足的複習時間,才能夠順利通過考試。garp協會的建議是15周的時間通過一門考試,需要根據自己的實際情況進行調整,找出最適合自己的備考方案。把自己的備考分成四個階段 第一階段,通讀階段 結合考試大綱將考試...
和菜鳥一起學c之函式指標
還有sd卡的檔案格式識別還不會,等明天和飛刀一起討論下,基本的android的sd卡的自動掛載已經實現了,可惜只支援fat格式的,ext格式的他不支援,新增了那些其他格式的掛載還是不行,主要是識別還不知道怎麼去實現。好了,既然這麼著,還是把以前看的一些函式指標做個記錄吧。因為linux驅動中很多很多...