Tasks Details
medium
1.
CountDiv
Compute number of integers divisible by k in range [a..b].
Task Score
100%
Correctness
100%
Performance
100%
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.
Write an efficient algorithm for the following assumptions:
- 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.
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used JavaScript
Time spent on task 39 minutes
Notes
not defined yet
Task timeline
Code: 21:59:04 UTC,
java,
autosave
Code: 22:24:15 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const difference = B - A;
const estimate = Math.floor(difference / K);
if (A % K === 0 || B % K === 0) {
return estimate + 1;
}
if (B % K >= A % K) {
return estimate - 1;
}
return estimate;
}
Code: 22:24:16 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const difference = B - A;
const estimate = Math.floor(difference / K);
if (A % K === 0 || B % K === 0) {
return estimate + 1;
}
if (B % K >= A % K) {
return estimate - 1;
}
return estimate;
}
Analysis
Code: 22:36:59 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const nearestLow = Math.ceil(A / K) * K;
const nearestHigh = Math.floor(B / K) * K;
return (nearestHigh - nearestLow) / K + 1;
}
Code: 22:37:00 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const nearestLow = Math.ceil(A / K) * K;
const nearestHigh = Math.floor(B / K) * K;
return (nearestHigh - nearestLow) / K + 1;
}
Analysis
Code: 22:37:04 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const nearestLow = Math.ceil(A / K) * K;
const nearestHigh = Math.floor(B / K) * K;
return (nearestHigh - nearestLow) / K + 1;
}
Analysis
Code: 22:37:07 UTC,
js,
final,
score: 
100
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A, B, K) {
// write your code in JavaScript (Node.js 8.9.4)
const nearestLow = Math.ceil(A / K) * K;
const nearestHigh = Math.floor(B / K) * K;
return (nearestHigh - nearestLow) / K + 1;
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(1)
expand all
Correctness tests
1.
0.072 s
OK
1.
0.072 s
OK
2.
0.072 s
OK
1.
0.072 s
OK
2.
0.068 s
OK
3.
0.068 s
OK
1.
0.068 s
OK
2.
0.068 s
OK
3.
0.072 s
OK
4.
0.072 s
OK
5.
0.072 s
OK
6.
0.068 s
OK
expand all
Performance tests
1.
0.068 s
OK
1.
0.068 s
OK
1.
0.072 s
OK
2.
0.072 s
OK
1.
0.072 s
OK
2.
0.072 s
OK
3.
0.072 s
OK
4.
0.072 s
OK