Rustコトハジメ

プログラミング言語Rustと競プロに関する情報をお届けします。

Codeforcesでは整数型にusizeを使うのは危険

ハマりました。

www.rustforbeginners.com

以前にこんな記事を書きましたが、嘘でした。AtCoder, yukicoder, AOJあたりでは通用しますが、Codeforcesでは通用しません。

Codeforcesでは、usizeを使うのは危険です。

Codeforcesではusizeはたぶん32ビットで扱われています。

Problem - D - Codeforces

はとても簡単な問題ですが、コンテスト中にWAして、なぜ失敗したかよくわかりませんでしたが、後でテストケースを見たら解答が32bitを超えていたのでまさかと思って調べると、

Starting out with codeforces. - Codeforces

Just started working on codeforces problem-set recently. I really like the website. It would have been great if the code we wrote ran in a 64-bit environment as opposed to a 32-bit environment. I use Rust and got bit assuming usize was 64-bit. I had to explicitly use u64.

少なくとも2018年4月の段階では32ビットで扱われているというコメントがあり、おそらく2019年9月現在でも32ビットです。

Codeforcesにも参加したい場合、usizeを使わずにu64を使いましょう。全部usizeにした方が便利ではあるんですけどねえ。