0

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」です。 「同じではありません...

私はオーバーフローを使用して、大きな素数で明示的にモッディングするのではなく、それ自体を自然にモッディングさせ、実行を高速化します。

4

1 に答える 1

0

問題ではありませんでした。問題は、ゼロに初期化されていないことでした。memsetを使用して修正しました。

于 2012-11-05T23:05:51.570 に答える