Open In App

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

Last Updated : 20 May, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

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 
 

 

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 <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 


Javascript




<script>
  
// JavaScript program to find the probability
// of an arbitrary positive divisor of
// Xth power of 10 to be a multiple of
// Yth power of 10
  
// Function to calculate and print
// the required probability
function prob(x, y)
{
      
    // Count of potential divisors
    // of X-th power of 10 which are
    // also multiples of Y-th power
    // of 10
    var num = Math.abs(x - y + 1) * 
              Math.abs(x - y + 1);
  
    // Count of divisors of X-th
    // power of 10
    var den = (x + 1) * (x + 1);
  
    // Calculate GCD
    var gcd = __gcd(num, den);
  
    // Print the reduced
    // fraction probability
    document.write(num / gcd + "/"
                   den / gcd + "\n");
}
  
function __gcd(a, b) 
    return b == 0 ? a : __gcd(b, a % b);     
      
// Driver Code
var X = 2, Y = 1;
      
prob(X, Y);
  
// This code is contributed by Khushboogoyal499
  
</script>


Output: 

4/9

 

Time Complexity: O(log(N))
 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads