Find Nth smallest number that is divisible by 100 exactly K times
Given two numbers N and K . The task is to find N’th smallest number that is divided by 100 exactly K times.
Examples:
Input : N = 12, K = 2
Output : 120000
120000 is divisible by 100 exactly 2 times and
is the 12 th smallest number also.
Input : N = 1000, K = 2
Output : 10010000
Approach:
- First, find the smallest number that is divisible by 100 exactly K times. That is 2*K 0’s after 1 as 100 has two 0’s only.
- To find N’th smallest number, multiply N with the previous number we get after adding 2*k 0’s.
- Consider a case when N is divisible by 100 as if we multiply N with the previous number then the new number will have more than (2*k + 1) trailing 0’s that means it will divisible by 100 more than K times.
- Multiply that number with (N + 1). Use string as N and K can be very large that will not fit in integer limit.
Below is the implementation of above approach:
C++
#include <bits/stdc++.h>
using namespace std;
string find_number( int N, int K)
{
string r;
if (N % 100 == 0) {
N += 1;
r = to_string(N);
}
else {
r = to_string(N);
}
for ( int i = 1; i <= K; i++)
r += "00" ;
return r;
}
int main()
{
int N = 1000, K = 2;
string ans = find_number(N, K);
cout << ans << "\n" ;
return 0;
}
|
Java
import java.util.*;
class GFG
{
static String find_number( int N, int K)
{
String r;
if (N % 100 == 0 )
{
N += 1 ;
r = String.valueOf(N);
}
else
{
r = String.valueOf(N);
}
for ( int i = 1 ; i <= K; i++)
r += "00" ;
return r;
}
public static void main(String[] args)
{
int N = 1000 , K = 2 ;
String ans = find_number(N, K);
System.out.println(ans);
}
}
|
Python3
def find_number(N, K):
r = ""
if (N % 100 = = 0 ):
N + = 1 ;
r = str (N)
else :
r = str (N)
for i in range ( 1 , K + 1 ):
r + = "00"
return r
N = 1000
K = 2 ;
ans = find_number(N, K)
print (ans)
|
C#
using System;
class GFG
{
static String find_number( int N, int K)
{
String r;
if (N % 100 == 0)
{
N += 1;
r = N.ToString();
}
else
{
r = N.ToString();
}
for ( int i = 1; i <= K; i++)
r += "00" ;
return r;
}
public static void Main(String[] args)
{
int N = 1000, K = 2;
String ans = find_number(N, K);
Console.WriteLine(ans);
}
}
|
Javascript
<script>
function find_number(N, K)
{
var r;
if (N % 100 == 0)
{
N += 1;
r = N.toString();
}
else
{
r = N.toString();
}
for ( var i = 1; i <= K; i++)
r += "00" ;
return r;
}
var N = 1000, K = 2;
var ans = find_number(N, K);
document.write(ans);
</script>
|
Time Complexity: O(K)
Auxiliary Space: O(1)
Last Updated :
31 May, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...