Respectable
CountDiv
タスク説明
関数を書く:
class solution {public int solution(int A, int B, int K); }
つまり、3つの整数A、B、およびKが与えられると、Kで割り切れる範囲[A..B]内の整数の数を返します。
{i:A≤i≤B、i mod K = 0}
たとえば、A = 6、B = 11、K = 2の場合、[6..11]の範囲内に2で割り切れる3つの数値、つまり6、8、10があるため、関数は3を返す必要があります。
次の仮定のための効率的なアルゴリズムを記述します。
- AとBは、[0..2,000,000,000]の範囲内の整数です。
- Kは[1..2,000,000,000]の範囲内の整数です。
- A≤B。
解く
著者注
これは数学的な問題です。本質を把握した後は、難度「Respectable」とは言わないでしょう。
这是一个数学问题,抓到本质的话,其实并达不到Respectable的难度。
Program
CountDivSolution.java
public int solution(int A, int B, int K) {
return (int)(Math.floor(B / (double)K)) - (int)(Math.ceil(A / (double)K)) + 1;
}
Detected time complexity:
O(1)
jUnit
Report
Candidate Report: trainingMUJ282-CCG