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>
|
Output
5
Time Complexity: O(N)
Auxiliary Space: O(1)