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: 5
(1 / 2) = 0.5 and 5 is the first digit after the decimal.
Input: P = 5, Q = 6, N = 5
Output: 3
(5 / 6) = 0.833333333…
Approach: Initialize an integer variable res that stores the resultant Nth digit. Now, while N > 0 do the following:
- Decrement N by 1.
- To compute the digit, update the value P = P * 10.
- Compute res = P / Q and update P = P % Q.
Finally, print the res.
Below is the implementation of the above approach:
C++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
5
Time Complexity: O(N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!