Encuentre el número formado en K pasos reduciendo N por 1 si el último dígito es 0, de lo contrario, divida por 10

Dados dos enteros N y K . Realice el siguiente tipo de operaciones en N :

  • si el último dígito de N es distinto de cero, disminuya el número en uno.
  • si el último dígito de N es cero, divida el número por 10 (es decir, elimine el último dígito).

La tarea es imprimir el resultado después de K tales operaciones.

Ejemplos:

Entrada : N = 512, K = 4
Salida : 50
Explicación: Las siguientes son las operaciones realizadas K veces para obtener el resultado deseado.
Operación 1: Último dígito de N, es decir , 2 != 0 . N se reduce en 1. ( N = 512 – 1i.e.   511 ).
Operación 2: ¡Último dígito de N, es decir , 1! = 0. N se reduce en 1. (N = 511 – 1, es decir, 510 ). Operación 3: El último dígito de N es 0. N se divide por 10. (N = 510/10, es decir, 51 ). Operación 4: Último dígito de N, es decir, 2! = 0. N se reduce en 1. (N = 51 – 1, es decir, 50 ). Por lo tanto, después de 4 operaciones N = 50. 

Entrada : N = 100, K = 2
Salida : 1
Explicación: N se divide por 10 dos veces.

 

Enfoque: este problema se basa en la implementación y es similar al último dígito de un número . Siga los pasos a continuación para resolver el problema dado.

  • Verifique repetidamente el último dígito del número entero N .
  • Si el último dígito es 0 , divida N entre 10 .
  • Si el último dígito NO es 0 , reste 1 de N.
  • Repita los pasos anteriores K veces.

A continuación se muestra la implementación del enfoque anterior.

C++

// C++ program for above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to perform operations K times
int decreaseNum(int N, int K)
{
    while (K--) {
        // Last digit is 0
        if (N % 10 == 0)
            N /= 10;
 
        // Last digit is not 0
        else
            N--;
    }
    return N;
}
 
// Driver Code
int main()
{
    // Declaration and initialisation
    int N, K;
    N = 512;
    K = 4;
 
    // Function call
    cout << decreaseNum(N, K);
 
    return 0;
}

Java

// Java program of the above approach
import java.util.*;
class GFG {
 
  // Function to perform operations K times
  public static int decreaseNum(int N, int K)
  {
    while (true) {
      K -= 1;
       
      // Last digit is 0
      if (N % 10 == 0)
        N /= 10;
 
      // Last digit is not 0
      else
        N--;
 
      if (K == 0)
        break;
    }
    return N;
  }
 
  // Driver Code
  public static void main(String args[])
  {
     
    // Declaration and initialisation
    int N, K;
    N = 512;
    K = 4;
 
    // Function call
    System.out.println(decreaseNum(N, K));
 
  }
}
 
    // This code is contributed by rakeshsahni

Python3

# python3 for above approach
 
# def Function to perform operations K times
def decreaseNum(N, K):
 
    while True:
        K -= 1
        # Last digit is 0
        if (N % 10 == 0):
            N //= 10
 
            # Last digit is not 0
        else:
            N -= 1
 
        if K == 0:
            break
 
    return N
 
# Driver Code
if __name__ == "__main__":
 
        # Declaration and initialisation
    N = 512
    K = 4
 
    # Function call
    print(decreaseNum(N, K))
 
    # This code is contributed by rakeshsahni

C#

// C# program for the above approach
using System;
using System.Collections;
 
class GFG
{
 
  // Function to perform operations K times
  public static int decreaseNum(int N, int K)
  {
    while (true) {
      K -= 1;
 
      // Last digit is 0
      if (N % 10 == 0)
        N /= 10;
 
      // Last digit is not 0
      else
        N--;
 
      if (K == 0)
        break;
    }
    return N;
  }
 
  // Driver Code
  public static void Main()
  {
    // Declaration and initialisation
    int N = 512;
    int K = 4;
 
    // Function call
    Console.Write(decreaseNum(N, K));
 
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

  <script>
      // JavaScript code for the above approach
 
      // Function to perform operations K times
      function decreaseNum(N, K)
      {
          while (K--)
          {
           
              // Last digit is 0
              if (N % 10 == 0)
                  N /= 10;
 
              // Last digit is not 0
              else
                  N--;
          }
          return N;
      }
 
      // Driver Code
 
      // Declaration and initialisation
      let N, K;
      N = 512;
      K = 4;
 
      // Function call
      document.write(decreaseNum(N, K));
 
// This code is contributed by Potta Lokesh
  </script>
Producción

50

Complejidad temporal: O(K)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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