Skip to main content

Count Divisors : Compute number of integers divisible by k in range [a..b].

Task description
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.
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).


class Solution { public int solution(int A, int B, int K) { // write your code in Java SE 8 long a=A; long b=B; long k=K; long count=0; long i=a%k; //System.out.println(a+" "+b+" "+k); if(i!=0){ a=a+Math.abs(i-k); } long j=b%k; if(j!=0){ b=b-(Math.abs(j)); } if(a!=b){ if(a%k==0) count=1; count=count+(b-a)/k; }else{ if(a==0 && b==0){ count=1; }else if(a%k==0){ count=(b/a); }else{ count=0; } } return (int)count; } }


100%                               100 out of 100 points


Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(1)
expand allExample tests
example 
A = 6, B = 11, K = 2
OK
expand allCorrectness tests
simple 
A = 11, B = 345, K = 17
OK
minimal 
A = B in {0,1}, K = 11
OK
extreme_ifempty 
A = 10, B = 10, K in {5,7,20}
OK
extreme_endpoints 
verify handling of range endpoints, multiple runs
OK
expand allPerformance tests
big_values 
A = 100, B=123M+, K=2
OK
big_values2 
A = 101, B = 123M+, K = 10K
OK
big_values3 
A = 0, B = MAXINT, K in {1,MAXINT}
OK
big_values4 
A, B, K in {1,MAXINT}

Comments

Popular posts from this blog

CODILITY: Determine whether given string of parentheses is properly nested.

Task description A string S consisting of N characters is called  properly nested  if: S is empty; S has the form " (U) " where U is a properly nested string; S has the form " VW " where V and W are properly nested strings. For example, string " (()(())()) " is properly nested but string " ()) " isn't. Write a function: class Solution { public int solution(String S); } that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise. For example, given S = " (()(())()) ", the function should return 1 and given S = " ()) ", the function should return 0, as explained above. Assume that: N is an integer within the range [ 0 .. 1,000,000 ]; string S consists only of the characters " ( " and/or " ) ". Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(1) (not counting the storage requi...

Distinct: Compute number of distinct values in an array.

Task description Write a function class Solution { public int solution(int[] A); } that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A. Assume that: N is an integer within the range [ 0 .. 100,000 ]; each element of array A is an integer within the range [ −1,000,000 .. 1,000,000 ]. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3. Complexity: expected worst-case time complexity is O(N*log(N)); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. class Solution { public int solution ( int [] A) { // write your code in Java SE 8 int len=A.length; int count= 1 ; ...

change directory (cd) function for an abstract file system ( Java Implementation )

Write a function that provides change directory (cd) function for an abstract file system. Notes: Root path is '/'. Path separator is '/'. Parent directory is addressable as "..". Directory names consist only of English alphabet letters (A-Z and a-z). For example, new Path("/a/b/c/d").cd("../x").getPath() should return "/a/b/c/x". Note: The evaluation environment uses '\' as the path separator. public class Path {     private String path;     public Path(String path) {         this.path = path;     }     public String getPath() {         return path;     }     public Path cd(String newPath) {         //throw new UnsupportedOperationException("Waiting to be implemented."); String[] newP=newPath.split("/");     String[] oldP=path.split("/");     int lnCount=0;     for(String str:newP){     if(st...