# Find the Nth digit in the proper fraction of two numbers

• Difficulty Level : Basic
• Last Updated : 18 Nov, 2021

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

 `// C++ implementation of the approach``#include ``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``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

 ``

Output

`5`

Time Complexity: O(N)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up