11821 High-Precision Number

ずっと解けてなかった問題。

問題

30桁精度の小数の足し算を行う。
この小数は、digits(30桁の整数配列)、decpt(小数点の位置を表現する整数)、sign(符号+/-)を保持する。たとえば、-218.302869584は、
digits : 2183028695840000...0
decpt : 3
sign : -1
と表現される。
いくつかの小数が与えられるとき、その合計を計算する。

考え方

がんばってやるだけ。
digitsはdequeを使った。
2つの小数を計算する時は、decptの大きい方に小さい方をあわせる。そのとき、30桁精度でいいので、ずらす時は30桁分の計算だけすればいい( pop_backとpush_front(0) )。
decptをあわせたら、符号が同じなら普通に足し算、違うなら値が大きいほうから引き算して符号を大きいほうにする。

反省

チェックしておきたいのは、「小数じゃない場合(8,-10など)」、「繰り上げ、繰り下がりがでる場合」など。