Codility CountDiv Exercise正しい方法を理解していない:範囲A..Bおよび値Kが与えられるとはCodility CountDiv溶液が
、K.
によって例を割り切れる範囲内の値の数を返します6から11の範囲では、2で割り切れる数は6,8および10であるので、答えは3です。必要な解はO(1) - soでなければなりません簡単な計算が必要です。
あなたはAとBは、範囲0..2,000,000,000であり、Kは1..2,000,000,000であり、0 <が< = B.
スコア100%通りであることが認められた溶液を、=ことと仮定することができます以下:私は混乱
int solution(int A, int B, int K)
{
int inclusive = ((A%K)==0) ? 1 : 0;
return (B/K) - (A/K) + inclusive;
}
私は入力A = 0を有するこの溶液、B = 0、K = 1をテストする場合、結果が1であるということですか? 0〜0の範囲では、1で割り切れる値の数は... 0と考えていたでしょう。
私はこれがエラーであると考えていました.Aのインクルーシブ値の+1は、Aがゼロ以外の場合にのみ設定する必要があります。
だから私は、以下の溶液(Aが非ゼロであることをテスト)を提出した:
int solution(int A, int B, int K)
{
int inclusive = (A && (A%K)==0) ? 1 : 0;
return (B/K) - (A/K) + inclusive;
}
しかし、これは62%(50%の正確さと75%の性能)を獲得しています。それが失敗したテストケースの一部であった:
- A = 0、B = 1、K = 11 - ガット0は、予想される1
- A = 0、B = MAXINT、中K {1、MAXINT} 、2000000000、予想2000000001
誰かが説明できますか?