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

**10**.

^{Y}**Note: **Y should be <= X.**Examples:**

Input:X = 2, Y = 1Output:4/9Explanation:

Positive divisors of 10^{2}are 1, 2, 4, 5, 10, 20, 25, 50, 100. A total of 9.

Multiples of 10^{1}upto 10^{2}are 10, 20, 50, 100. A total of 4.

P(divisor of 10^{2}is a multiple of 10^{1}) = 4/9.

Input:X = 99, Y = 88Output:9/625Explanation:

A = 10^{99}, B = 10^{88}

P(divisor of 10^{99}is a multiple of 10^{88}) = 9/625

**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 10
^{X}will be of the form:(2

* 5^{P}), where 0 <= P, Q <= X^{Q} - Find the number of Prime factors of
**10**^{X}10

^{X}= 2^{X}* 5^{X} - Hence total number of divisors of 10
^{X}will be:**( X + 1 ) * ( X + 1 )**. - Now, consider all multiples of 10
^{Y}which can be potential divisors of 10^{X}. They are also of the form:( 2

^{A}* 5^{B}), where Y <= A, B <= X. - So, count of potential divisors of
**10**which are also multiples of^{X}**10**is^{Y}**( 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 <bits/stdc++.h>` `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))