LoginSignup
0
0

More than 1 year has passed since last update.

[100%] CountDiv (codility lessons)

Last updated at Posted at 2020-12-19

Respectable

CountDiv

範囲[a..b]でkで割り切れる整数の数を計算します。
image.png

タスク説明

関数を書く:

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。

解く

image.png

著者注

これは数学的な問題です。本質を把握した後は、難度「Respectable」とは言わないでしょう。

这是一个数学问题,抓到本质的话,其实并达不到Respectable的难度。

Program

CountDivSolution.java

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

CountDivSolutionTest.java

Report

Candidate Report: trainingMUJ282-CCG


See also: CodilityのLessonsをすべて解く(更新中)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0