K-ésimo número de N dígito más grande divisible por M

Dados tres enteros positivos N , K y M . La tarea es encontrar el K -ésimo número de  N dígito más grande divisible por M.

Nota: K será un número entero tal que siempre existe el K -ésimo número de N dígitos más grande divisible por M.

Ejemplos

Entrada: N = 2, K = 2, M = 2
Salida: 96
Explicación: El segundo número más grande de 2 dígitos divisible por 2 es 96. 

Entrada: N = 9, K = 6, M = 4
Salida: 999999976

 

Enfoque: El problema es de base matemática. Dados tres números N , K y M . Se requiere encontrar el K -ésimo número de N dígito más grande divisible por M. Para obtener el N dígito más grande divisible por M, primero se requiere encontrar el número de N dígito más grande (por ejemplo , P ), que es N por 9
Ahora el mayor número de N dígitos divisible por M es (P – (P%M)) .
Por lo tanto, reste (K-1) veces Ma partir de este valor para obtener el K-ésimo valor más grande del número de N dígitos que es divisible por M.
A continuación se presentan las condiciones y la expresión matemática para obtener el K-ésimo número de N dígito más grande divisible por M.

Sea P el mayor número de N dígitos
Entonces el mayor número de N dígitos divisible por M es: (P – (P % M))
Ahora el K-ésimo número de N dígito más grande divisible por M es: [(P – (P % M)) – ((K – 1) * M)]

A continuación se muestra el código de acuerdo con la fórmula anterior.

C++

// C++ program for above approach
#include <iostream>
using namespace std;
 
// Function to find Kth N
// digit number divisible by M
int findAnswer(int N, int K, int M)
{
    int i;
    long long int r = 0;
 
    // Loop to calculate the largest
    // N digit number.
    for (i = 1; i <= N; i++) {
        r = r * 10 + 9;
    }
 
    // Kth largest N digit number
    // divisible by M.
    long long int u = r - (r % M)
        - M * (K - 1);
 
    return u;
}
 
// Driver Code
int main()
{
    int N = 9;
    int K = 6;
    int M = 4;
 
    cout << findAnswer(N, K, M);
    return 0;
}

Java

// Java program for above approach
import java.util.*;
 
class GFG{
 
  // Function to find Kth N
  // digit number divisible by M
  static int findAnswer(int N, int K, int M)
  {
    int i;
    int r = 0;
 
    // Loop to calculate the largest
    // N digit number.
    for (i = 1; i <= N; i++) {
      r = r * 10 + 9;
    }
 
    // Kth largest N digit number
    // divisible by M.
    int u = r - (r % M)
      - M * (K - 1);
 
    return u;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    int N = 9;
    int K = 6;
    int M = 4;
 
    System.out.print(findAnswer(N, K, M));
  }
}
 
// This code is contributed by 29AjayKumar

Python3

# Python code for the above approach
 
# Function to find Kth N
# digit number divisible by M
def findAnswer(N, K, M):
    i = None
    r = 0;
 
    # Loop to calculate the largest
    # N digit number.
    for i in range(1, N + 1):
        r = r * 10 + 9;
 
    # Kth largest N digit number
    # divisible by M.
    u = r - (r % M) - M * (K - 1);
 
    return u;
 
# Driver Code
N = 9;
K = 6;
M = 4;
 
print(findAnswer(N, K, M));
 
# This code is contributed by Saurabh Jaiswal

C#

// C# program for above approach
using System;
class GFG
{
 
  // Function to find Kth N
  // digit number divisible by M
  static int findAnswer(int N, int K, int M)
  {
    long r = 0;
 
    // Loop to calculate the largest
    // N digit number.
    for (int i = 1; i <= N; i++) {
      r = r * 10 + 9;
    }
 
    // Kth largest N digit number
    // divisible by M.
    long u = r - (r % M)
      - M * (K - 1);
 
    return (int)u;
  }
 
  // Driver Code
  public static void Main()
  {
    int N = 9;
    int K = 6;
    int M = 4;
 
    Console.Write(findAnswer(N, K, M));
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
    // JavaScript code for the above approach
 
    // Function to find Kth N
    // digit number divisible by M
    function findAnswer(N, K, M) {
        let i;
        let r = 0;
 
        // Loop to calculate the largest
        // N digit number.
        for (i = 1; i <= N; i++) {
            r = r * 10 + 9;
        }
 
        // Kth largest N digit number
        // divisible by M.
        let u = r - (r % M)
            - M * (K - 1);
 
        return u;
    }
 
    // Driver Code
    let N = 9;
    let K = 6;
    let M = 4;
 
    document.write(findAnswer(N, K, M));
 
     // This code is contributed by Potta Lokesh
</script>
Producción

999999976

Complejidad de tiempo: O (MaxDigit), donde maxDigit es el número de N dígitos más grande.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por priyanshusingh241202 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 *