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>
50
Complejidad temporal: O(K)
Espacio auxiliar: O(1)