51nod這難度過渡也太突兀了……這還是基礎題,我真是個弟弟。
題目要求的是能算帶符號的加減法,我這個暫時只能算正整數和0的,之後再來寫。
參考:大數的四則運算(加法、減法、乘法、除法)
#include
#define maxlength 10000
intexactadd
(char
,char
,char
);intmain
(int argc,
char
const
*ar**)
intexactadd
(char a,
char b,
char r)
,n2[maxlength+2]
=;//陣列n1和n2分別儲存a和b的逆序,比如a=1234則n1=4321,注意a的3是'3',而n1的3是ascii碼3
//char陣列本身是int陣列,這裡其實是在用ascii碼儲存數字,至於這些數字對應什麼字元我們根本不知道
//數字後沒有寫入\0,如果整個輸出會非常長
//不用動態陣列是因為需要手動把所有的數初始化為0,比較麻煩
//逆序a,b,以ascii碼儲存在n1,n2表中
for(i=
0;i) n1[i]
=a[len_a-
1-i]
-'0'
;for
(i=0
;i) n2[i]
=b[len_b-
1-i]
-'0'
;for
(i=0
;i)//把所有的位都算了,因為多餘的部分已經初始化為0,所以不影響計算
else
carry=0;
r[i]
=bit+
'0';
//再還原成字元的0,1,2……
}return carry==
1?len+
1:len;
//最高位如果發生進製,就要len+1,否則和兩數之間較大的那個位數保持一致。
}void
debug_printmemory
(char a,
int n)
//除錯用,無關
}}
51Nod 1005 大數加法
今天遇見一道細節問題特別多的題,寫得我眼疼,題本身不難,難得是他的細節問題繁多,需要考慮的情況也甚多,稍有不慎就側漏了,哈哈。題的思路也很清晰,就是將最後的結果的正負的符號分離出來,剩下的就是高精度的加減法了,利用字串處理即可,效率可以很高很高,有多高呢?自己感覺吧!題 給出2個大整數a,b,計算a...
51nod 1005 大數加法
給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147586 468711654886output示例 537643802472純粹的模擬,主要分一下幾種情況 ...
51nod 1005 大數加法
1005 大數加法 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147586 4...