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
#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 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 |
# 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# 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 // 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 ?> |
<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