diff options
| author | Mistivia <i@mistivia.com> | 2025-08-27 15:28:59 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-08-27 15:28:59 +0800 |
| commit | 9f4bae54801d78426b7089d0ab13f45f57656b3b (patch) | |
| tree | 593ba04a95f3e6e7fe926af2168ffa6bffecc4d7 /0013/main.pas | |
| parent | 16bb535cdf949eaed2c4981166d82db092915532 (diff) | |
solve 13
Diffstat (limited to '0013/main.pas')
| -rw-r--r-- | 0013/main.pas | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/0013/main.pas b/0013/main.pas new file mode 100644 index 0000000..6d473be --- /dev/null +++ b/0013/main.pas @@ -0,0 +1,98 @@ +program main; + +uses + Vector_Prim.Integer; + +type + TVec = Vector_Prim.Integer.TVector; + +procedure revvec(var vec: TVec); +var + i: Longint; + j: Longint; + t: Integer; +begin + i := 0; + j := vec.len-1; + while i < j do + begin + t := vec.buf[i]; + vec.buf[i] := vec.buf[j]; + vec.buf[j] := t; + i := i + 1; + j := j - 1; + end; +end; + +function readnum(): TVec; +var + v: TVec; + c: Char; +begin + init(v); + while true do + begin + if eof then + break; + read(c); + if c = #10 then + break; + push_elem(v, ord(c) - ord('0')); + end; + revvec(v); + readnum := v; +end; + +function add(a: TVec; b: TVec): TVec; +var + ret: TVec; + carry, len, i, reg: Integer; + na, nb: Integer; +begin + init(ret); + carry := 0; + len := a.len; + if b.len > len then + len := b.len; + + for i := 0 to len-1 do + begin + na := 0; + nb := 0; + if i < a.len then + na := a.buf[i]; + if i < b.len then + nb := b.buf[i]; + reg := na + nb + carry; + carry := reg div 10; + push_elem(ret, reg mod 10); + end; + if carry <> 0 then + push_elem(ret, 1); + add := ret; +end; + +procedure printnum(n: TVec); +var + i: Integer; +begin + for i := n.len-1 downto n.len-10 do + write(chr(ord('0') + n.buf[i])); + writeln(''); +end; + +const + N = 100; +var + nums: Array[1..N] of TVec; + res: TVec; + i: Integer; +begin + init(res); + for i := 1 to N do + nums[i] := readnum(); + res := nums[1]; + for i := 2 to N do + res := add(res, nums[i]); + printnum(res); +end. |
