1005 大數加法

2021-08-01 05:13:30 字數 1554 閱讀 5673

1005 大數加法

基準時間限制:1 秒 空間限制:131072 kb 分值: 0 

難度:基礎題

題目位址

給出2個大整數a,b,計算a+b的結果。

input

第1行:大數a

第2行:大數b

(a,b的長度 <= 10000 需注意:a b有可能為負數)

output

輸出a + b
input示例

68932147586

468711654886

output示例

537643802472
**寫的好長:需要注意得是a或b為負數的情況。其中為負數的情況,要比較2者絕對值的大小,讓絕對值大的減小的,如果負數的長度-1(符號佔一位,要減1)

大於正數的,肯定負數的絕對值大。第二是:當長度相等的時候,比較2者絕對者大小。基本上就是這個想法,重複運算挺多的,考慮細節,wa了好多次.55555555555555555

#include#include#include#include#includeusing namespace std;	

char a[10050],b[10050];

int numa[10050],numb[10050];

int i,j;

int add(int lena,int lenb)

} for(i=10050;i>=1&&numa[i]==0;i--);

if(i==0)

for(;i>=1;i--)

cout<=0;i--)

numa[j++]=a[i]-'0';

for(i=lenb-1,j=1;i>=1;i--)

numb[j++]=b[i]-'0';

if(lenb-1>lena)

flag=1;

if(lenb-1==lena)

cout<

for(;i>=1;i--)

cout<=1&&numa[i]==0;i--);

if(i==0)

for(;i>=1;i--)

cout<=1;i--)

numa[j++]=a[i]-'0';

for(i=lenb-1,j=1;i>=1;i--)

numb[j++]=b[i]-'0';

for(i=1;i<=10050;i++) }

for(i=10050;i>=1&&numa[i]==0;i--);

cout<

for(;i>=1;i--)

cout<>a>>b;

int lena=strlen(a);

int lenb=strlen(b);

if(a[0]!='-'&&b[0]!='-')

add(lena,lenb);

else if(a[0]!='-'&&b[0]=='-')

else if(a[0]=='-'&&b[0]!='-')

else

return 0;

}

1005 大數加法

給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147586 468711654886output示例 537643802472 include include...

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純粹的模擬,主要分一下幾種情況 ...