Open In App

Find the Nth digit in the proper fraction of two numbers

Given three integers P, Q and N where P < Q, the task is to compute the fraction value of P / Q and find the Nth digit after the decimal.
Example 
 

Input: P = 1, Q = 2, N = 1 
Output:
(1 / 2) = 0.5 and 5 is the first digit after the decimal.
Input: P = 5, Q = 6, N = 5 
Output:
(5 / 6) = 0.833333333… 
 



 

Approach: Initialize an integer variable res that stores the resultant Nth digit. Now, while N > 0 do the following: 
 



  1. Decrement N by 1.
  2. To compute the digit, update the value P = P * 10.
  3. Compute res = P / Q and update P = P % Q.

Finally, print the res.
Below is the implementation of the above approach: 
 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the Nth digit
// in the fraction (p / q)
int findNthDigit(int p, int q, int N)
{
    // To store the resultant digit
    int res;
 
    // While N > 0 compute the Nth digit
    // by dividing p and q and store the
    // result into variable res
    // and go to next digit
    while (N > 0) {
        N--;
        p *= 10;
        res = p / q;
        p %= q;
    }
    return res;
}
 
// Driver code
int main()
{
    int p = 1, q = 2, N = 1;
 
    cout << findNthDigit(p, q, N);
 
    return 0;
}




// Java implementation of the approach
import java.io.*;
public class GFG
{
 
    // Function to print the Nth digit
    // in the fraction (p / q)
    static int findNthDigit(int p,
                            int q, int N)
    {
        // To store the resultant digit
        int res = 0;
     
        // While N > 0 compute the Nth digit
        // by dividing p and q and store the
        // result into variable res
        // and go to next digit
        while (N > 0)
        {
            N--;
            p *= 10;
            res = p / q;
            p %= q;
        }
        return res;
    }
     
    // Driver code
    public static void main(String args[])
    {
        int p = 1, q = 2, N = 1;
     
        System.out.println(findNthDigit(p, q, N));
    }
}
 
// This code is contributed by AnkitRai01




# Python3 implementation of the approach
 
# Function to print the Nth digit
# in the fraction (p / q)
def findNthDigit(p, q, N) :
 
    # While N > 0 compute the Nth digit
    # by dividing p and q and store the
    # result into variable res
    # and go to next digit
    while (N > 0) :
        N -= 1;
        p *= 10;
        res = p // q;
        p %= q;
 
    return res;
 
# Driver code
if __name__ == "__main__" :
     
    p = 1; q = 2; N = 1;
    print(findNthDigit(p, q, N));
 
# This code is contributed by kanugargng




// C# implementation of the approach
using System;
 
class GFG
{
 
    // Function to print the Nth digit
    // in the fraction (p / q)
    static int findNthDigit(int p, int q, int N)
    {
        // To store the resultant digit
        int res = 0;
     
        // While N > 0 compute the Nth digit
        // by dividing p and q and store the
        // result into variable res
        // and go to next digit
        while (N > 0)
        {
            N--;
            p *= 10;
            res = p / q;
            p %= q;
        }
        return res;
    }
     
    // Driver code
    public static void Main()
    {
        int p = 1, q = 2, N = 1;
     
        Console.WriteLine(findNthDigit(p, q, N));
    }
}
 
// This code is contributed by AnkitRai01




<script>
      // JavaScript implementation of the approach
 
      // Function to print the Nth digit
      // in the fraction (p / q)
      function findNthDigit(p, q, N)
      {
       
        // To store the resultant digit
        var res;
 
        // While N > 0 compute the Nth digit
        // by dividing p and q and store the
        // result into variable res
        // and go to next digit
        while (N > 0)
        {
          N--;
          p *= 10;
          res = parseInt(p / q);
          p %= q;
        }
        return res;
      }
 
      // Driver code
      var p = 1,
        q = 2,
        N = 1;
      document.write(findNthDigit(p, q, N));
       
      // This code is contributed by rdtank.
    </script>

Output
5

Time Complexity: O(N)
Auxiliary Space: O(1)


Article Tags :