Tasks Details
medium
1.
CountDiv
Compute number of integers divisible by k in range [a..b].
Task Score
37%
Correctness
50%
Performance
25%
Write a function:
class Solution { public int solution(int A, int B, int 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 Java 21
Time spent on task 15 minutes
Notes
not defined yet
Code: 06:12:19 UTC,
java,
autosave
Code: 06:25:52 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int A, int B, int K) {
int i = 1, count = 0;
while(true) {
int num = (K*i);
if(num > B) break;
if(num >= A && num <= B) count++;
i++;
}
return count;
}
}
Code: 06:25:54 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int A, int B, int K) {
int i = 1, count = 0;
while(true) {
int num = (K*i);
if(num > B) break;
if(num >= A && num <= B) count++;
i++;
}
return count;
}
}
Analysis
Code: 06:26:10 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int A, int B, int K) {
int i = 1, count = 0;
while(true) {
int num = (K*i);
if(num > B) break;
if(num >= A && num <= B) count++;
i++;
}
return count;
}
}
Analysis
Code: 06:26:19 UTC,
java,
final,
score: 
37
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int A, int B, int K) {
int i = 1, count = 0;
while(true) {
int num = (K*i);
if(num > B) break;
if(num >= A && num <= B) count++;
i++;
}
return count;
}
}
Analysis summary
The following issues have been detected: wrong answers, timeout errors.
For example, for the input [0, 0, 11] the solution returned a wrong answer (got 0 expected 1).
Analysis
expand all
Correctness tests
1.
0.004 s
OK
1.
0.008 s
WRONG ANSWER,
got 0 expected 1
2.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.008 s
OK
extreme_endpoints
verify handling of range endpoints, multiple runs
verify handling of range endpoints, multiple runs
✘
WRONG ANSWER
got 7 expected 8
got 7 expected 8
1.
0.004 s
OK
2.
0.008 s
OK
3.
0.004 s
OK
4.
0.008 s
OK
5.
0.004 s
WRONG ANSWER,
got 7 expected 8
6.
0.008 s
WRONG ANSWER,
got 6 expected 7
expand all
Performance tests
1.
1.228 s
TIMEOUT ERROR,
running time: 1.228 sec., time limit: 0.100 sec.
1.
0.004 s
OK
big_values3
A = 0, B = MAXINT, K in {1,MAXINT}
A = 0, B = MAXINT, K in {1,MAXINT}
✘
TIMEOUT ERROR
Killed. Hard limit reached: 6.000 sec.
Killed. Hard limit reached: 6.000 sec.
1.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
2.
0.004 s
WRONG ANSWER,
got 21 expected 2
1.
0.004 s
OK
2.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
3.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
4.
0.004 s
OK