UPDATE うーん、アップデートがあります。どうやら私の「unsignedlonglongfhash [105] [100555]」の巨大な配列は、vC++で自動的にゼロに初期化されていませんでした...={0}のときに機能しました。自動的に初期化するのではないですか?
私はコンテストプログラミングを行っており、通常は学校やideoneなどでg ++を使用してコンパイルしますが、VC++2010コンパイラを使用する必要があります。
そうは言っても、(Rabin-Karpで使用されているような)多項式ローリングハッシュを実行するコードがありますが、これらのコンパイラではオーバーフローが異なりますか?
コードはここにあります:http://pastebin.com/UFdpwHCt(ハッシュは67行目あたりです)
出力はここにあります:http://i.imgur.com/KCcvI.png
なぜ「bhash」は2つのコンパイラ間で等しいのに、「fhash」はそうではないのでしょうか。それらは同じ方法を使用してハッシュされます...G++-3出力では、「fhash」と「bhash」出力は同じですが(想定されています)、VC++-10出力では「fhash」と「bhash」です。 「同じではありません...
私はオーバーフローを使用して、大きな素数で明示的にモッディングするのではなく、それ自体を自然にモッディングさせ、実行を高速化します。