codility之CountDiv

CountDiv

题目:



Write a function:

    function solution($A, $B, $K);

that, given three integers A, B and K, returns the number of integers within the range [A..B] that are divisible by K, i.e.:

    { i : A ≤ i ≤ B, i mod K = 0 }

For example, for A = 6, B = 11 and K = 2, your function should return 3, because there are three numbers divisible by 2 within the range [6..11], namely 6, 8 and 10.

Assume that:

        A and B are integers within the range [0..2,000,000,000];
        K is an integer within the range [1..2,000,000,000];
        A ≤ B.

Complexity:

        expected worst-case time complexity is O(1);
        expected worst-case space complexity is O(1).

其实就是一个简单的数学题,注意下边界条件就可以了。

要求:

时间复杂度O(1)、空间复杂度为O(1)。

如何解决?

代码:


function solution($A, $B, $K) {
    // write your code in PHP5.5

    $extra = 0;
    if ($A % $K == 0) {
        $extra = 1;
    }
    $ret = floor($B / $K) - floor($A / $K) + $extra;
    return intval($ret);
}

Leave a Reply

Your email address will not be published. Required fields are marked *


To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax