Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Print first k digits of 1/n where n is a positive integer

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a positive integer n, print first k digits after point in value of 1/n. Your program should avoid overflow and floating point arithmetic.
Examples : 
 

Input:   n = 3, k = 3
Output:  333

Input:   n = 50, k = 4
Output:  0200

We strongly recommend to minimize the browser and try this yourself first.
Let us consider an example n = 7, k = 3. The first digit of 1/7 is ‘1’, it can be obtained by doing integer value of 10/7. Remainder of 10/7 is 3. Next digit is 4 which can be obtained by taking integer value of 30/7. Remainder of 30/7 is 2. Next digits is 2 which can be obtained by taking integer value of 20/7 
 

C++




#include <iostream>
using namespace std;
 
// Function to print first k digits after dot in value
// of 1/n.  n is assumed to be a positive integer.
void print(int n, int k)
{
   int rem = 1; // Initialize remainder
 
   // Run a loop k times to print k digits
   for (int i = 0; i < k; i++)
   {
         // The next digit can always be obtained as
         // doing (10*rem)/10
         cout << (10 * rem) / n;
 
         // Update remainder
         rem = (10*rem) % n;
   }
}
 
// Driver program to test above function
int main()
{
    int n = 7, k = 3;
    print(n, k);
    cout << endl;
 
    n = 21, k = 4;
    print(n, k);
 
    return 0;
}

Java




// Java code to Print first k
// digits of 1/n where n is a
// positive integer
import java.io.*;
 
class GFG
{
    // Function to print first
    // k digits after dot in value
    // of 1/n. n is assumed to be
    // a positive integer.
    static void print(int n, int k)
    {
        // Initialize remainder
        int rem = 1;
         
        // Run a loop k times to print k digits
        for (int i = 0; i < k; i++)
        {
            // The next digit can always be
            // obtained as doing (10*rem)/10
            System.out.print( (10 * rem) / n);
 
            // Update remainder
            rem = (10 * rem) % n;
             
        }
         
    }
     
    // Driver program
    public static void main(String []args)
    {
        int n = 7, k = 3;
        print(n, k);
        System.out.println();
         
        n = 21;
        k = 4;
        print(n, k);
         
    }
}
 
// This article is contributed by vt_m

Python3




# Python code to Print first k
# digits of 1/n where n is a
# positive integer
import math
 
# Function to print first k digits
# after dot in value of 1/n. n is
# assumed to be a positive integer.
def Print(n, k):
    rem = 1 # Initialize remainder
     
    # Run a loop k times to print
    # k digits
    for i in range(0, k):
        # The next digit can always
        # be obtained as doing
        # (10*rem)/10
        print(math.floor(((10 * rem)
                       / n)), end="")
         
        # Update remainder
        rem = (10*rem) % n
 
# Driver program to test
# above function
n = 7
k = 3
Print(n, k);
print(" ")
n = 21
k = 4
Print(n, k);
 
# This code is contributed by Sam007.

C#




// C# code to Print first k digits of
// 1/n where n is a positive integer
using System;
 
class GFG {
     
    // Function to print first
    // k digits after dot in value
    // of 1/n. n is assumed to be
    // a positive integer.
    static void print(int n, int k)
    {
         
        // Initialize remainder
        int rem = 1;
         
        // Run a loop k times to
        // print k digits
        for (int i = 0; i < k; i++)
        {
             
            // The next digit can always be
            // obtained as doing (10*rem)/10
            Console.Write( (10 * rem) / n);
 
            // Update remainder
            rem = (10 * rem) % n;
        }
    }
     
    // Driver program
    public static void Main()
    {
        int n = 7, k = 3;
        print(n, k);
        Console.WriteLine();
         
        n = 21;
        k = 4;
        print(n, k);
    }
}
 
// This code is contributed by Sam007.

PHP




<?php
// Function to print first k digits
// after dot in value of 1/n. n is
// assumed to be a positive integer.
 
function println($n, $k)
{
    // Initialize remainder
    $rem = 1;
 
// Run a loop k times
// to print k digits
for ($i = 0; $i < $k; $i++)
{
    // The next digit can always
    // be obtained as doing
    // (10 * rem) / 10
    echo floor((10 * $rem) / $n);
 
    // Update remainder
    $rem = (10 * $rem) % $n;
}
}
 
// Driver Code
$n = 7; $k = 3;
println($n, $k);
echo "\n";
 
$n = 21; $k = 4;
println($n, $k);
 
// This code is contributed by aj_36
?>

Javascript




<script>
 
// Function to print first k digits after dot in value
// of 1/n.  n is assumed to be a positive integer.
function print(n,  k)
{
   let rem = 1; // Initialize remainder
   let ans = '';
   // Run a loop k times to print k digits
   for (let i = 0; i < k; i++)
   {
         // The next digit can always be obtained as
         // doing (10*rem)/10
         ans += Math.floor(((10 * rem) / n));
         // Update remainder
         rem = (10*rem) % n;
   }
   document.write(ans)
}
 
// Driver program to test above function
let n = 7;
let k = 3;
print(n, k);
document.write("<br>");
n = 21;
k = 4;
print(n, k);
 
</script>

Output : 

142
0476

Time Complexity: O(k)

Auxiliary Space: O(1)

Reference: 
Algorithms And Programming: Problems And Solutions by Alexander Shen
This article is contributed by Sachin. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 


My Personal Notes arrow_drop_up
Last Updated : 03 Nov, 2021
Like Article
Save Article
Similar Reads
Related Tutorials