カメヲラボ

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

64bit整数

整数を扱う問題で64bitの精度でないと答えが出せない問題がいくつかありますが、PKUのジャッジシステムではこのような注意書きがあります。


For 64-bit integers, both long long int and __int64 is supported and they are equivalent. But only "%I64d" is supported when reading with scanf or writing with printf. "%lld" is not supported because GCC and G++ from MinGW use msvcrt.dll which does not support the C99 standard.

(G++ only) As required by the ISO C++ standard, the return type of the main function must be int, otherwise it will cause Compile Error.

MinGWのCランタイムが、msvcrt.dll依存だから"%lld"ではなくて"%I64d"を使ってチョ。ということなのですが、私も以前この仕様のためにめちゃくちゃ悩みました。その時はたしかkurimuraさんに教えてもらったような・・・。そんなわけで、正しいはずのコードが全然通らないわーという人はこの辺もチェックしておいてください。*1

Code Golfばっかりやってるから余計に思うのですが、自分のSubmitしたコードがどんな出力なのか位はチェックできた方が良いと思います。でないと、「なんでじゃー」という気持ちから連続Submitをしてしまいますし、それが運営者の懸念するシステムへの過剰な負荷につながるわけだし。時間制限付きのコンテストでなければ、テストケースもある程度公開して良いんじゃないかなーと。って、これはPOJの人に直接言った方が良いですね。。。

*1:、先に書いておけば良かったですね