Tutorialspoint.dev

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

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

/div>

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 = 21; $k = 4;
println($n, $k);
  
// This code is contributed by aj_36
?>


Output :

142
0476

Reference:
Algorithms And Programming: Problems And Solutions by Alexander Shen



This article is attributed to GeeksforGeeks.org

You Might Also Like

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter