私はCodility.com demo testを受け取りました。算術オーバーフローをテストめちゃめちゃ多数有するCodilityのデモテストについて混乱した
TEST extreme_large_numbers配列:
私のプログラムは、ユニットテストのために間違った値を返し。
TIME 0.056秒。
RESULT 間違った答えは、2を得たが、それは、平衡点ではなく、和[0..1] = 4294967294、和[3..3] = - I couldnので、[OK]を2
、私のコードで最初に問題が発生するのを見て、私はVisual Studioプロジェクトでそれを実行しようとしました。コンパイラはint
のために4294967294
が大きすぎると捉えました。 uint
またはlong
にする必要があります。だから私はlong
にすべてを変更し、それはVSで働いた。
ただし、デモテストでは、関数の入力/戻り型をlong
に変更することはできません。
- 2147483647(最大の符号付き32ビット整数)
- 4294967294(Codility.comユニットテストによって与えられた数)
誰かがこのプログラムはおそらく4294967294
などで正しく動作することができますどのように説明していただけますint[]
のデータ値の1つ?
1.私のソリューションは最も効率的ではないことに同意しますが、私は素晴らしいプログラマーではなく、わずか30分です!私はあなたが私の質問に答えたとは思わない。 '4294967294'を格納するのに十分な大きさのデータ型がないと、値をどのように比較できますか? – JohnB
1.私はちょうどそれを指摘していた... 2.実際には負の値ですが、大きな値の合計がintの範囲を超えています。 – Lucero
私は... '2147483647 * 2 = 4294967294'意図的に' int'データ型を吹き飛ばしています:( – JohnB