Count possible values of K such that X – 1 and Y – 1 modulo K is same

Given two numbers X and Y, the task is to find the count of integers K which satisfies the equation (X – 1) % K = (Y – 1) % K.

Examples:

Input: X = 2, Y = 6
Output: 3
Explanation:
K = {1, 2, 4} satisfies the given equation. Therefore, the count is 3.

Input: X = 4, Y = 9
Output: 2

Approach: Follow the steps below to solve the problem:



  • The idea is to find the absolute difference of X and Y.
  • Find the count of divisors of the calculated absolute difference and print the count as the required answer.

Below is the implementation of the above approach:

C++14

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to count integers K
// satisfying given equation
int condition(int a, int b)
{
    // Calculate the absoluter
    // difference between a and b
    int d = abs(a - b), count = 0;
 
    // Iterate till sqrt of the diffeence
    for (int i = 1; i <= sqrt(d); i++) {
        if (d % i == 0) {
            if (d / i == i)
                count += 1;
            else
                count += 2;
        }
    }
 
    // Return the count
    return count;
}
 
// Driver Code
int main()
{
 
    int x = 2, y = 6;
    cout << condition(x, y) << endl;
 
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for the above approach
import java.io.*;
 
class GFG{
  
// Function to count integers K
// satisfying given equation
static int condition(int a, int b)
{
     
    // Calculate the absoluter
    // difference between a and b
    int d = Math.abs(a - b), count = 0;
  
    // Iterate till sqrt of the diffeence
    for(int i = 1; i <= Math.sqrt(d); i++)
    {
        if (d % i == 0)
        {
            if (d / i == i)
                count += 1;
            else
                count += 2;
        }
    }
  
    // Return the count
    return count;
}
  
// Driver Code
public static void main (String[] args)
{
    int x = 2, y = 6;
 
    System.out.println(condition(x, y));
}
}
 
// This code is contributed by sanjoy_62

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for the above approach
 
# Function to count integers K
# satisfying given equation
def condition(a, b):
     
    # Calculate the absoluter
    # difference between a and b
    d = abs(a - b)
    count = 0
 
    # Iterate till sqrt of the diffeence
    for i in range(1, d + 1):
        if i * i > d:
            break
        if (d % i == 0):
            if (d // i == i):
                count += 1
            else:
                count += 2
 
    # Return the count
    return count
 
# Driver Code
if __name__ == '__main__':
 
    x = 2
    y = 6
     
    print(condition(x, y))
 
# This code is contributed by mohit kumar 29

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for the
// above approach
using System;
class GFG{
  
// Function to count
// integers K satisfying
// given equation
static int condition(int a,
                     int b)
{   
  // Calculate the absoluter
  // difference between a and b
  int d = Math.Abs(a - b), count = 0;
 
  // Iterate till sqrt of
  // the diffeence
  for(int i = 1;
          i <= Math.Sqrt(d); i++)
  {
    if (d % i == 0)
    {
      if (d / i == i)
        count += 1;
      else
        count += 2;
    }
  }
 
  // Return the count
  return count;
}
  
// Driver Code
public static void Main(String[] args)
{
  int x = 2, y = 6;
  Console.WriteLine(condition(x, y));
}
}
 
// This code is contributed by shikhasingrajput

chevron_right


Output: 

3





 

Time Complexity: O(√abs(X – Y))
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.