51NOD 1005 大數加法

2021-09-09 06:21:40 字數 1145 閱讀 5662

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...