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:
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 C#
Time spent on task 15 minutes
Notes
not defined yet
Code: 06:22:29 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int cnt = 0;
int result = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.060 s
OK
stdout:
result : 0 result : 0 result : 0 result : 1 result : 2 result : 3
expand all
User tests
1.
0.062 s
OK
function result: 22
function result: 22
stdout:
result : 1 result : 2 result : 2 result : 3 result : 3 result : 4 result : 4 result : 5 result : 5 result : 6 result : 6 result : 7 result : 7 result : 8 result : 8 result : 8 result : 9 result : 9 result : 10 result : 10 result : 11 result : 11 result : 12 result : 12 result : 13 result : 13 result : 14 result : 14 result : 15 result : 15 result : 15 result : 16 result : 16 result : 17 result : 17 result : 18 result : 18 result : 19 result : 19 result : 20 result : 20 result : 21 result : 21 result : 22
Code: 06:24:16 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int cnt = 0;
int result = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.059 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.064 s
OK
function result: 22
function result: 22
stdout:
result : 1 cnt : 2000000000 result : 2 cnt : -294967296 result : 2 cnt : 1705032704 result : 3 cnt : -589934592 result : 3 cnt : 1410065408 result : 4 cnt : -884901888 result : 4 cnt : 1115098112 result : 5 cnt : -1179869184 result : 5 cnt : 820130816 result : 6 cnt : -1474836480 result : 6 cnt : 525163520 result : 7 cnt : -1769803776 result : 7 cnt : 230196224 result : 8 cnt : -2064771072 result : 8 cnt : -64771072 result : 8 cnt : 1935228928 result : 9 cnt : -359738368 result : 9 cnt : 1640261632 result : 10 cnt : -654705664 result : 10 cnt : 1345294336 result : 11 cnt : -949672960 result : 11 cnt : 1050327040 result : 12 cnt : -1244640256 result : 12 cnt : 755359744 result : 13 cnt : -1539607552 result : 13 cnt : 460392448 result : 14 cnt : -1834574848 result : 14 cnt : 165425152 result : 15 cnt : -2129542144 result : 15 cnt : -129542144 result : 15 cnt : 1870457856 result : 16 cnt : -424509440 result : 16 cnt : 1575490560 result : 17 cnt : -719476736 result : 17 cnt : 1280523264 result : 18 cnt : -1014444032 result : 18 cnt : 985555968 result : 19 cnt : -1309411328 result : 19 cnt : 690588672 result : 20 cnt : -1604378624 result : 20 cnt : 395621376 result : 21 cnt : -1899345920 result : 21 cnt : 100654080 result : 22 cnt : 2100654080
Code: 06:26:41 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int cnt = 0;
int result = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
if(B < cnt) break;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.035 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.038 s
OK
function result: 22
function result: 22
stdout:
result : 1 cnt : 2000000000 result : 2 cnt : -294967296 result : 2 cnt : 1705032704 result : 3 cnt : -589934592 result : 3 cnt : 1410065408 result : 4 cnt : -884901888 result : 4 cnt : 1115098112 result : 5 cnt : -1179869184 result : 5 cnt : 820130816 result : 6 cnt : -1474836480 result : 6 cnt : 525163520 result : 7 cnt : -1769803776 result : 7 cnt : 230196224 result : 8 cnt : -2064771072 result : 8 cnt : -64771072 result : 8 cnt : 1935228928 result : 9 cnt : -359738368 result : 9 cnt : 1640261632 result : 10 cnt : -654705664 result : 10 cnt : 1345294336 result : 11 cnt : -949672960 result : 11 cnt : 1050327040 result : 12 cnt : -1244640256 result : 12 cnt : 755359744 result : 13 cnt : -1539607552 result : 13 cnt : 460392448 result : 14 cnt : -1834574848 result : 14 cnt : 165425152 result : 15 cnt : -2129542144 result : 15 cnt : -129542144 result : 15 cnt : 1870457856 result : 16 cnt : -424509440 result : 16 cnt : 1575490560 result : 17 cnt : -719476736 result : 17 cnt : 1280523264 result : 18 cnt : -1014444032 result : 18 cnt : 985555968 result : 19 cnt : -1309411328 result : 19 cnt : 690588672 result : 20 cnt : -1604378624 result : 20 cnt : 395621376 result : 21 cnt : -1899345920 result : 21 cnt : 100654080 result : 22 cnt : 2100654080
Code: 06:27:04 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int cnt = 0;
int result = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
if(B <= cnt) break;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.059 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.058 s
OK
function result: 1
function result: 1
stdout:
result : 1 cnt : 2000000000
Code: 06:28:44 UTC,
cs,
verify,
result: Failed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int cnt = 0;
int result = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
if(B <= cnt) return result + 1;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.059 s
WRONG ANSWER,
got 4 expected 3
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.058 s
OK
function result: 2
function result: 2
stdout:
result : 1 cnt : 2000000000
Code: 06:30:48 UTC,
cs,
verify,
result: Failed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 1;
int cnt = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
if(B <= cnt) break;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.036 s
WRONG ANSWER,
got 4 expected 3
stdout:
result : 1 cnt : 2 result : 1 cnt : 4 result : 1 cnt : 6 result : 2 cnt : 8 result : 3 cnt : 10 result : 4 cnt : 12
expand all
User tests
1.
0.034 s
OK
function result: 2
function result: 2
stdout:
result : 2 cnt : 2000000000
Code: 06:33:04 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
if(B <= cnt) break;
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.059 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.059 s
OK
function result: 1
function result: 1
stdout:
result : 1 cnt : 2000000000
Code: 06:33:55 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
if(B <= cnt) break;
cnt += K;
Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.057 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.058 s
OK
function result: 2
function result: 2
stdout:
result : 1 cnt : 2000000000 result : 2
Code: 06:34:58 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(cnt < 0) break;
if(A <= cnt) result++;
Console.WriteLine("result : " + result);
cnt += K;
Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
expand all
Example tests
1.
0.059 s
OK
stdout:
result : 0 cnt : 2 result : 0 cnt : 4 result : 0 cnt : 6 result : 1 cnt : 8 result : 2 cnt : 10 result : 3 cnt : 12
expand all
User tests
1.
0.057 s
OK
function result: 2
function result: 2
stdout:
result : 1 cnt : 2000000000 result : 2 cnt : -294967296
Code: 06:35:24 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(cnt < 0) break;
if(A <= cnt) result++;
// Console.WriteLine("result : " + result);
cnt += K;
// Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
Code: 06:35:32 UTC,
cs,
verify,
result: Passed
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(cnt < 0) break;
if(A <= cnt) result++;
// Console.WriteLine("result : " + result);
cnt += K;
// Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
User test case 1:
[0, 2000000000, 2000000000]
Analysis
Code: 06:35:35 UTC,
cs,
final,
score: 
100
using System;
class Solution {
public int solution(int A, int B, int K) {
if(A < 0 || 2000000000 < A || B < 0 || 2000000000 < B || K < 1 || 2000000000 < K || B < A) throw new InvalidOperationException();
if(K == 1) return (B + 1) - A;
int result = 0;
int cnt = 0;
while(cnt <= B)
{
if(cnt < 0) break;
if(A <= cnt) result++;
// Console.WriteLine("result : " + result);
cnt += K;
// Console.WriteLine("cnt : " + cnt);
}
return result;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(1)
expand all
Correctness tests
1.
0.053 s
OK
1.
0.056 s
OK
2.
0.054 s
OK
1.
0.055 s
OK
2.
0.055 s
OK
3.
0.052 s
OK
1.
0.053 s
OK
2.
0.051 s
OK
3.
0.054 s
OK
4.
0.051 s
OK
5.
0.052 s
OK
6.
0.054 s
OK
expand all
Performance tests
1.
0.114 s
OK
1.
0.052 s
OK
1.
0.054 s
OK
2.
0.054 s
OK
1.
0.054 s
OK
2.
0.054 s
OK
3.
0.053 s
OK
4.
0.051 s
OK