カメヲラボ

主にプログラミングとお勉強全般について書いてます

Superlong sums(0)

http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=2602

超長い足し算(まんま)

100万桁の足し算を短いコードで書くわけだが、数字を一桁ずつ配列に読み込んで筆算のように足して一文字ずつ出力して・・・とやるとGCCではTLE(時間切れ)になってしまう。というわけで、時間短縮のため文字コードのまま計算し、最後はputs(文字列)で終わらせたい。また、scanfの代わりにgetsを用いると読み込む速度が劇的に速くなるのでできればgetsを使いたい。

問題の概要

最初の整数が桁数、2行目以降は位の高い順に2数がならんでいる。
問題のsampleをそのまま使わせてもらうと、


4
0 4
4 2
6 8
3 7
このインプットの場合、4287と463の合計を計算するという意味だ。問題自体は大したこと無いのだが、これを超短いコードで書くのはかなり難しい。


まず、最短コードに向けて大まかな方針を立てておくことにする。


①配列はintではなくcharを使う。
②出力はputsを使う。
③桁上がりの計算を工夫する。
④最終的にscanfではなくgetsを使いたい。


まずはこの4点を意識しながら、コードを書いていこう。