やあ、灰コーダーだよ(挨拶)
プログラミングの勉強も兼ねてAtCoder(競技プログラミングのサイト) https://atcoder.jp/ のABCにチャレンジしているのだが、全然使ってなかったscanfやprintfを息を吐くように使ったり数学的なサムシングが必要になったりして理屈はわかるが実装で躓く事が多かったので、超初心者として備忘録的に置いておこうと思う。
なお自分はC言語(GCC9.2.1)で実装している。
・テンプレートを作っておけ
int main()とかreturn 0とか毎回書くのもアホらしいからテンプレートを作っておけ。一文字ミスって時間ロスするほどアホらしいものはない。
・scanfの配列と文字列の仕様は覚えろ
文字列は%sで&は不要、配列はまとめて代入できるやり方もあるみたいだが面倒なのでforで回して&[]でぶち込め。forで回す場合は大体はデータ数が与えられるからそれでint i = 0;i < 最大数;i++ でやれ。
・考え方がわからない問題は後で解説放送を見直せ
だいたいそういうのはpdfの解説が簡潔すぎてわからないから、Youtubeで問題の解き方を丁寧に解説してくれてるやつを見ろ。基本的に「天才か?」って言いながら見るようになるから。
・ソートで出来そうならソートしろ
お前の書く総当たり関数よりライブラリのクイックソートの方が処理が早い。TLEしたくなければライブラリを頼れ。事前にソート用関数の準備をしておけ。
・オーバーフローに気をつけろ
自分はここで躓いた。変数をintではなくlongにすることには気づいていたのだが、scanfやprintfの仕様に気がついておらず、ひたすらlongにしたりint64_tにしてはマイナスが出る事に頭を傾げていた。
%dはintまでしか対応していない。%luを使え。それで解決する。
これで最低限どうにかなるはず。上を見るとあまりにもカラフルな方々がそびえ立っているから、それどころではない人間の助けになればいいな。