Contar números de un rango dado que contiene un número dado como sufijo

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>
Producción: 

2

Complejidad temporal: O(N), donde N es el rango. 
Espacio Auxiliar: O(1) 

Publicación traducida automáticamente

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