見出し画像

Python3の整数値には上限がない

Python2 -> 3への過程で撤廃されている。

なので、Paizaの問題を解くときなんかは気を付ける必要がある。
Python3を使う人が、というよりは、「Python3歴が長いけど他言語でPaizaの問題を解こうとしている人」がニュアンスとしては正しいけど。
例えばB32: デジタル計算機

かつてこの問題をPython3でクリアした時には、特に意識せずにコードがりがり書いて提出したけど、
今回これをCでやり直したときにハマった。
普段の業務で「整数型の上限値・下限値」を意識することはほぼないと思うが、
Paizaの問題では境界値のチェックなどでネチネチと減点されることが多い。


Cのintはshortやlong、はてはunsignedを付ける・付けないで有効な値の範囲が変わってくる。

入力例の2つでOKだったので提出したらなんと30点。
(↑の例に挙げた問題はデバッグが超めんどい。ソロバンを文字列で表現するとかいう鬼畜の所業である。)

その後、開き直ってありとあらゆるintの定義をunsigned long intに置き換えたら全部通った。

「競プロやってる人たちってすげぇんだなぁ」と実感した。

この記事が気に入ったらサポートをしてみませんか?