Dados dos números N y K . La tarea es encontrar el N’ésimo número más pequeño que se divide por 100 exactamente K veces.
Ejemplos:
Entrada: N = 12, K = 2
Salida: 120000
120000 es divisible por 100 exactamente 2 veces y
también es el 12º número más pequeño.
Entrada: N = 1000, K = 2
Salida: 10010000
Acercarse:
- Primero, encuentre el número más pequeño que sea divisible por 100 exactamente K veces. Eso es 2*K 0 después de 1 ya que 100 tiene solo dos 0.
- Para encontrar el número N’th más pequeño, multiplique N con el número anterior que obtenemos después de sumar 2*k 0.
- Considere un caso en el que N es divisible por 100, como si multiplicamos N con el número anterior, entonces el nuevo número tendrá más de (2*k + 1) 0 finales, lo que significa que será divisible por 100 más de K veces.
- Multiplica ese número por (N + 1). Use una string ya que N y K pueden ser muy grandes y no caben en el límite de enteros.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Function to find the Nth smallest number string find_number(int N, int K) { string r; // If N is divisible by 100 then we // multiply N + 1 otherwise, it will be // divisible by 100 more than K times if (N % 100 == 0) { N += 1; // convert integer to string r = to_string(N); } // if N is not divisible by 100 else { // convert integer to string r = to_string(N); } // add 2*K 0's at the end to be divisible // by 100 exactly K times for (int i = 1; i <= K; i++) r += "00"; return r; } // Driver Code int main() { int N = 1000, K = 2; string ans = find_number(N, K); cout << ans << "\n"; return 0; }
Java
// Java implementation of above approach import java.util.*; class GFG { // Function to find the Nth smallest number static String find_number(int N, int K) { String r; // If N is divisible by 100 then we // multiply N + 1 otherwise, it will be // divisible by 100 more than K times if (N % 100 == 0) { N += 1; // convert integer to string r = String.valueOf(N); } // if N is not divisible by 100 else { // convert integer to string r = String.valueOf(N); } // add 2*K 0's at the end to be divisible // by 100 exactly K times for (int i = 1; i <= K; i++) r += "00"; return r; } // Driver Code public static void main(String[] args) { int N = 1000, K = 2; String ans = find_number(N, K); System.out.println(ans); } } /* This code is contributed by PrinciRaj1992 */
Python3
# Python3 implementation of above approach # Function to find the Nth smallest number def find_number(N, K): r = "" # If N is divisible by 100 then we # multiply N + 1 otherwise, it will be # divisible by 100 more than K times if (N % 100 == 0): N += 1; # convert integer to string r = str(N) # if N is not divisible by 100 else: # convert integer to string r = str(N) # add 2*K 0's at the end to be divisible # by 100 exactly K times for i in range(1, K + 1): r += "00" return r # Driver Code N = 1000 K = 2; ans = find_number(N, K) print(ans) # This code is contributed by Mohit Kumar
C#
// C# implementation of the approach using System; class GFG { // Function to find the Nth smallest number static String find_number(int N, int K) { String r; // If N is divisible by 100 then we // multiply N + 1 otherwise, it will be // divisible by 100 more than K times if (N % 100 == 0) { N += 1; // convert integer to string r = N.ToString(); } // if N is not divisible by 100 else { // convert integer to string r = N.ToString(); } // add 2*K 0's at the end to be divisible // by 100 exactly K times for (int i = 1; i <= K; i++) r += "00"; return r; } // Driver Code public static void Main(String[] args) { int N = 1000, K = 2; String ans = find_number(N, K); Console.WriteLine(ans); } } // This code is contributed by Rajput-Ji
Javascript
<script> // JavaScript implementation of above approach // Function to find the Nth smallest number function find_number(N, K) { var r; // If N is divisible by 100 then we // multiply N + 1 otherwise, it will be // divisible by 100 more than K times if (N % 100 == 0) { N += 1; // convert integer to string r = N.toString(); } // if N is not divisible by 100 else { // convert integer to string r = N.toString(); } // add 2*K 0's at the end to be divisible // by 100 exactly K times for(var i = 1; i <= K; i++) r += "00"; return r; } // Driver Code var N = 1000, K = 2; var ans = find_number(N, K); document.write(ans); // This code is contributed by Khushboogoyal499 </script>
Producción:
10010000
Complejidad de tiempo: O(K)
Espacio Auxiliar: O(1)