当たり前だけど忘れちゃいけないプログラミング基礎

231っていくつくらい?って聞かれて
(゚-゚;)(;゚-゚)(゚-゚;)(;゚-゚)ってしてたら、プログラマ名乗れない(´;ω;`)

最近お勉強して、いろんなところで役立ちそうなプログラミングの基礎知識をめも。

intの範囲

intは32bitなので
2-31 <=int < 231
231は21億くらい。

float(C++)の精度

単精度だと

符号部1bit 指数部8bit 仮数部23bit

2-8以上28未満の桁の数字を 223 + 1の精度で表現できる。
223 + 1は、大体10進数で7桁分くらい

floatってせいぜい7桁分くらいしか小数以下を正確に表せないのかーと思うとしょぼい感じする。

C++のdoubleやPythonのfloatは倍精度なので、

符号部1bit 指数部11bit 仮数部52bit

15桁分くらいの精度。

250はどれくらいの数か

210は1024。 だいたい103なので、
250は約1015

対数って結局何?

lognmは、
mをn進数にしたときに何桁の数字になるか。

ただし、lognmがちょうど整数になる時、桁数は+1になるので注意。

1秒以内で回せるループ

だいたいだけど、普通のPCで実行してC++だと108くらい。
Pythonで106くらい。

さいご

もっと書こうと思ったけどまた今度。
なんか間違ってたら教えて下さい( ・ω・)



おまけ:Pythonで競技プログラミングをする利点と欠点

利点

  • オーバーフローを気にしなくていい
  • 型変換とか一瞬でできるので比較的早く書ける
  • 標準ライブラリでpermutation, combinationがある。(Javaにない

欠点

  • はやくない。 C++で想定解でも間に合わないことある。あるある。