Dados tres enteros A, L y R , la tarea es contar números de un rango L a R que contiene A como sufijo.
Ejemplos:
Entrada: A = 2, L = 2, R = 20
Salida: 2
Explicación:
Solo dos números posibles del rango dado que satisfacen las condiciones son 2 y 12 .Entrada: A = 25, L = 25, R = 273
Salida: 3
Explicación:
Los tres números del rango dado que satisfacen las condiciones son 25, 125 y 225.
Enfoque ingenuo: el enfoque más simple para resolver el problema es atravesar los números del rango L a R y verificar si el número termina con A o no. Para que todos los números sean verdaderos, incremente el conteo de dichos números en 1. Finalmente, imprima el conteo final.
Complejidad temporal: O(B)
Espacio auxiliar: O(log 2 R)
Enfoque eficiente: para optimizar el enfoque anterior, siga los pasos a continuación:
- Cuente y almacene el número de dígitos de A y guárdelo en una variable, por ejemplo, contar.
- Eleve 10 a la potencia de la cuenta de dígitos de A , es decir, 10 cuenta .
- Verifique para cada ciclo de 10 cuentas si se encuentra en el rango [L, R] . Si se encuentra que es cierto, entonces incremente el conteo en 1.
- Imprime el valor final de count .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program of the // above approach #include <bits/stdc++.h> using namespace std; // Function to count the number // ends with given number in range void countNumEnds(int A, int L, int R) { int temp, count = 0, digits; int cycle; // Find number of digits in A digits = log10(A) + 1; // Find the power of 10 temp = pow(10, digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } cout << count; } // Driver Code int main() { int A = 2, L = 2, R = 20; // Function Call countNumEnds(A, L, R); }
Java
// Java Program of the // above approach class GFG{ // Function to count the number // ends with given number in range static void countNumEnds(int A, int L, int R) { int temp, count = 0, digits; int cycle; // Find number of digits in A digits = (int) (Math.log10(A) + 1); // Find the power of 10 temp = (int) Math.pow(10, digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } System.out.print(count); } // Driver Code public static void main(String[] args) { int A = 2, L = 2, R = 20; // Function Call countNumEnds(A, L, R); } } // This code is contributed by Rajput-Ji
Python3
# Python3 program of the # above approach from math import log10 # Function to count the number # ends with given number in range def countNumEnds(A, L, R): count = 0 # Find number of digits in A digits = int(log10(A) + 1) # Find the power of 10 temp = int(pow(10, digits)) cycle = temp while(temp <= R): if(temp >= L): count += 1 # Incrementing the A temp += cycle print(count) # Driver Code A = 2 L = 2 R = 20 # Function call countNumEnds(A, L, R) # This code is contributed by Shivam Singh
C#
// C# program of the // above approach using System; class GFG{ // Function to count the number // ends with given number in range static void countNumEnds(int A, int L, int R) { int temp, count = 0, digits; int cycle; // Find number of digits in A digits = (int)(Math.Log10(A) + 1); // Find the power of 10 temp = (int)Math.Pow(10, digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } Console.Write(count); } // Driver Code public static void Main(String[] args) { int A = 2, L = 2, R = 20; // Function call countNumEnds(A, L, R); } } // This code is contributed by Amit Katiyar
Javascript
<script> // JavaScript program for // the above approach // Function to count the number // ends with given number in range function countNumEnds(A, L, R) { let temp = 0, count = 0, digits = 0; let cycle = 0; // Find number of digits in A digits = Math.round(Math.log10(A)) + 1; // Find the power of 10 temp = Math.round(Math.pow(10, digits)); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } document.write(count); } // Driver code let A = 2, L = 2, R = 20; // Function Call countNumEnds(A, L, R); // This code is contributed by splevel62. </script>
2
Complejidad temporal: O(N), donde N es el rango.
Espacio Auxiliar: O(1)