Related Articles
Smallest number divisible by n and has at-least k trailing zeros
• Difficulty Level : Hard
• Last Updated : 01 Apr, 2021

Two integers n and k are given. Our task is to print K-rounding of n. K-rounding is the minimum positive integer X, such that x ends with k or more zeros and is divisible by n.
Examples :

```Input :  n = 30, k = 3.
Output : 3000
3000 is the smallest number that
has at-least k 0s and is divisible
by n.

Input : n = 375, k = 4.
Output : 30000```

Method 1 :
The brute force approach is to start with result = 10k. Check if result is divided by n. If yes, it’s the answer, else increase it by 10k
Method 2 : The efficient approach is to calculate the LCM of 10k and n.
Suppose, n = 375, k = 4.
result = 10000.
Now, LCM of 375 and 10000 is the lowest number divided by both of them.
It will contain k or more zeros (because it is multiple of 10k) and will be a multiple of n as well.
Below is the implementation :

## C++

 `// CPP code to print K-rounded value of n``#include ``using` `namespace` `std;` `// Function to compute the rounded value``long` `long` `getRounding(``long` `long` `n, ``long` `long` `k)``{``    ``long` `long` `rounding = ``pow``(10, k);` `    ``// Computing GCD``    ``long` `long` `result = __gcd(rounding, n);` `    ``// Returning LCM (GCD * LCM = n * k)``    ``return` `((rounding * n) / result);``}` `// Driver Code``int` `main()``{` `    ``long` `long` `n = 375, k = 4;` `    ``// Function call``    ``cout << getRounding(n, k);` `    ``return` `0;``}`

## Java

 `// JAVA Code For Smallest number divisible by``// n and has at-least k trailing zeros``import` `java.util.*;` `class` `GFG {``    ` `     ``// Function to find gcd``     ``static` `long` `gcd(``long` `a, ``long` `b)``        ``{``            ``// Everything divides 0``            ``if` `(a == ``0` `|| b == ``0``)``               ``return` `0``;``          ` `            ``// base case``            ``if` `(a == b)``                ``return` `a;``          ` `            ``// a is greater``            ``if` `(a > b)``                ``return` `gcd(a-b, b);``            ``return` `gcd(a, b-a);``        ``}` `    ``// Function to compute the rounded value``    ``public` `static` `long` `getRounding(``long` `n, ``long` `k)``    ``{``        ``long` `rounding = (``long``)Math.pow(``10``, k);``     ` `        ``// Computing GCD``        ``long` `result = gcd(rounding, n);``     ` `        ``// Returning LCM (GCD * LCM = n * k)``        ``return` `((rounding * n) / result);``    ``}``    ` `    ``/* Driver program to test above function */``    ``public` `static` `void` `main(String[] args)``    ``{``        ``long` `n = ``375``, k = ``4``;``         ` `        ``// Function call``        ``System.out.println( getRounding(n, k));``        ` `    ``}``}``  ` `// This code is contributed by Arnav Kr. Mandal.`

## Python3

 `# python Code For Smallest number``# divisible by n and has``# at-least k trailing zeros` `# Function to find gcd``def` `gcd(a, b):``    ` `    ``# Everything divides 0``    ``if` `(a ``=``=` `0` `or` `b ``=``=` `0``):``        ``return` `0``            ` `    ``# base case``    ``if` `(a ``=``=` `b):``        ``return` `a``            ` `    ``# a is greater``    ``if` `(a > b):``        ``return` `gcd(a ``-` `b, b)``        ` `    ``return` `gcd(a, b ``-` `a)``        ` `# Function to compute the``# rounded value``def` `getRounding(n, k):``    ` `    ``rounding ``=` `pow``(``10``, k);` `    ``# Computing GCD``    ``result ``=` `gcd(rounding, n)` `    ``# Returning LCM (GCD * LCM``    ``# = n * k)``    ``return` `((rounding ``*` `n) ``/` `result)` `# Driver Code` `n ``=` `375``k ``=` `4` `# Function call``print``( ``int``(getRounding(n, k)))` `# This code is contributed by Sam007`

## C#

 `// C# Code For Smallest number``// divisible by n and has``// at-least k trailing zeros``using` `System;` `class` `GFG {``    ` `    ``// Function to find gcd``    ``static` `long` `gcd(``long` `a, ``long` `b)``        ``{``            ` `            ``// Everything divides 0``            ``if` `(a == 0 || b == 0)``            ``return` `0;``            ` `            ``// base case``            ``if` `(a == b)``                ``return` `a;``            ` `            ``// a is greater``            ``if` `(a > b)``                ``return` `gcd(a - b, b);``            ``return` `gcd(a, b - a);``        ``}` `    ``// Function to compute the rounded value``    ``public` `static` `long` `getRounding(``long` `n, ``long` `k)``    ``{``        ``long` `rounding = (``long``)Math.Pow(10, k);``    ` `        ``// Computing GCD``        ``long` `result = gcd(rounding, n);``    ` `        ``// Returning LCM (GCD * LCM = n * k)``        ``return` `((rounding * n) / result);``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``long` `n = 375, k = 4;``        ` `        ``// Function call``        ``Console.Write( getRounding(n, k));``        ` `    ``}``}``    ` `// This code is contributed by Nitin Mittal.`

## PHP

 ` ``\$b``)``        ``return` `gcd(``\$a` `- ``\$b``, ``\$b``);``    ``return` `gcd(``\$a``, ``\$b` `- ``\$a``);``}` `// Function to compute``// the rounded value``function` `getRounding(``\$n``, ``\$k``)``{``    ``\$rounding` `= ``intval``(pow(10, ``\$k``));` `    ``// Computing GCD``    ``\$result` `= gcd(``\$rounding``, ``\$n``);` `    ``// Returning LCM (GCD * LCM = n * k)``    ``return` `intval``((``\$rounding` `* ``\$n``) /``                   ``\$result``);``}` `// Driver code``\$n` `= 375;``\$k` `= 4;` `// Function call``echo` `getRounding(``\$n``, ``\$k``);` `// This code is contributed by Sam007``?>`

## Javascript

 ``

Output :

`30000`

This article is contributed by Rohit Thapliyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.