1005 大數加法
基準時間限制:1 秒 空間限制:131072 kb 分值: 0
難度:基礎題
題目位址
給出2個大整數a,b,計算a+b的結果。
input
第1行:大數aoutput第2行:大數b
(a,b的長度 <= 10000 需注意:a b有可能為負數)
輸出a + binput示例
68932147586output示例468711654886
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純粹的模擬,主要分一下幾種情況 ...