# Probability that an arbitrary positive divisor of 10^X is an integral multiple of 10^Y

Given two numbers X and Y, the task is to find the probability that an arbitrary positive divisor of 10X is an integral multiple of 10Y.

Note: Y should be <= X.
Examples:

Input: X = 2, Y = 1
Output: 4/9
Explanation:
Positive divisors of 102 are 1, 2, 4, 5, 10, 20, 25, 50, 100. A total of 9.
Multiples of 101 upto 102 are 10, 20, 50, 100. A total of 4.
P(divisor of 102 is a multiple of 101) = 4/9.

Input: X = 99, Y = 88
Output: 9/625
Explanation:
A = 1099, B = 1088
P(divisor of 1099 is a multiple of 1088) = 9/625

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Pre-requisites: Total number of divisors of a number

Approach:
In order to solve the problem, we need to observe the steps below:

• All divisors of 10X will be of the form:

(2 P * 5 Q), where 0 <= P, Q <= X

• Find the number of Prime factors of 10X

10X = 2X * 5X

• Hence total number of divisors of 10X will be: ( X + 1 ) * ( X + 1 ).
• Now, consider all multiples of 10Y which can be potential divisors of 10X. They are also of the form:

( 2 A * 5 B ), where Y <= A, B <= X.

• So, count of potential divisors of 10X which are also multiples of 10Y is ( X – Y + 1 ) * ( X – Y + 1 ).
• Hence, required probability is (( X – Y + 1 ) * ( X – Y + 1 )) / (( X + 1 ) * ( X + 1 )). Computing the value of the expression for given values of X and Y gives us the required probability.

Below is the implementation of the above approach:

## C++

 // C++ program to find the probability // of an arbitrary positive divisor of // Xth power of 10 to be a multiple of // Yth power of 10    #include using namespace std; #define int long long int    // Function to calculate and print // the required probability void prob(int x, int y) {     // Count of potential divisors     // of X-th power of 10 which are     // also multiples of Y-th power     // of 10     int num = abs(x - y + 1)               * abs(x - y + 1);        // Count of divisors of X-th     // power of 10     int den = (x + 1) * (x + 1);        // Calculate GCD     int gcd = __gcd(num, den);        // Print the reduced     // fraction probability     cout << num / gcd << "/"          << den / gcd << endl; }    // Driver Code signed main() {     int X = 2, Y = 1;     prob(X, Y);     return 0; }

## Java

 // Java program to find the probability // of an arbitrary positive divisor of // Xth power of 10 to be a multiple of // Yth power of 10 import java.util.*;    class GFG{    // Function to calculate and print // the required probability static void prob(int x, int y) {            // Count of potential divisors     // of X-th power of 10 which are     // also multiples of Y-th power     // of 10     int num = Math.abs(x - y + 1) *                Math.abs(x - y + 1);        // Count of divisors of X-th     // power of 10     int den = (x + 1) * (x + 1);        // Calculate GCD     int gcd = __gcd(num, den);        // Print the reduced     // fraction probability     System.out.print(num / gcd + "/" +                       den / gcd + "\n"); }    static int __gcd(int a, int b)  {      return b == 0 ? a : __gcd(b, a % b);      }     // Driver code public static void main(String[] args) {     int X = 2, Y = 1;            prob(X, Y); } }    // This code is contributed by amal kumar choubey

## Python3

 # Python3 program to find the probability # of an arbitrary positive divisor of # Xth power of 10 to be a multiple of # Yth power of 10 from math import *    # Function to calculate and print # the required probability def prob(x, y):            # Count of potential divisors     # of X-th power of 10 which are     # also multiples of Y-th power     # of 10     num = abs(x - y + 1) * abs(x - y + 1)        # Count of divisors of X-th     # power of 10     den = (x + 1) * (x + 1)        # Calculate GCD     gcd1 = gcd(num, den)        # Print the reduced     # fraction probability     print(num // gcd1, end = "")     print("/", end = "")     print(den // gcd1)    # Driver Code if __name__ == '__main__':            X = 2     Y = 1            prob(X, Y)        # This code is contributed by Surendra_Gangwar

## C#

 // C# program to find the probability  // of an arbitrary positive divisor of  // Xth power of 10 to be a multiple of  // Yth power of 10  using System; class GFG{     // Function to calculate and print  // the required probability  static void prob(int x, int y)  {             // Count of potential divisors      // of X-th power of 10 which are      // also multiples of Y-th power      // of 10      int num = Math.Abs(x - y + 1) *                Math.Abs(x - y + 1);         // Count of divisors of X-th      // power of 10      int den = (x + 1) * (x + 1);         // Calculate GCD      int gcd = __gcd(num, den);         // Print the reduced      // fraction probability      Console.Write(num / gcd + "/" +                    den / gcd + "\n");  }     static int __gcd(int a, int b)  {      return b == 0 ? a : __gcd(b, a % b);      }     // Driver code  public static void Main(string[] args)  {      int X = 2, Y = 1;             prob(X, Y);  }  }     // This code is contributed by AnkitRai01

Output:

4/9

Time Complexity: O(log(N))

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.