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
Try It Yourself
#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