Encuentre el número N-ésimo más pequeño que sea divisible por 100 exactamente K veces

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)
 

Publicación traducida automáticamente

Artículo escrito por souradeep y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *