给定两个数字X和Y ,任务是找到满足等式(X – 1)%K =(Y – 1)%K的整数K的数量。
例子:
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
方法:请按照以下步骤解决问题:
- 这个想法是找到X和Y的绝对差。
- 找到计算出的绝对差的除数计数,并将该计数打印为所需的答案。
下面是上述方法的实现:
C++14
// C++ program for the above approach
#include
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;
}
Java
// 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
Python3
# 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
C#
// 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
输出:
3
时间复杂度: O(√abs(X – Y))
辅助空间: O(1)