高精度加法(1168:大整數加法)
阿新 • • 發佈:2019-01-08
參照了題中的資料可能有多餘的前導0的情況。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int c[205]; char a[205],b[205]; int lc,la,lb; int main() { gets(a); int la=strlen(a); gets(b); int lb=strlen(b); int aa[205]={0},bb[205]={0}; for(int i=0;i<=la-1;i++) { aa[la-i]=a[i]-'0'; } for(int i=0;i<=lb-1;i++) { bb[lb-i]=b[i]-'0'; } int i=1,x=0; while(i<=la||i<=lb) { c[i]=aa[i]+bb[i]+x; x=c[i]/10; c[i]%=10; i++; lc++; } if(x) { lc++; c[i]+=x; } bool temp=true; for(int i=lc;i>=1;i--) { if(c[i]==0&&temp==true) continue; else temp=false; cout<<c[i]; } return 0; }
注意:
- 加法進位時位數的變化(設定變數x存放進位數,並作為兩數字和的最高位的判斷條件)
- 對於前導0的情況,我採用了運算但不列印的辦法...可能有一定弊端(佔空間?