Conteo de pares en un rango dado con suma de su producto y suma igual a su número concatenado

Dados dos números A y B , la tarea es encontrar el número de pares (X, Y) en el rango [A, B] , tal que (X * Y) + (X + Y) sea igual al número formado por concatenación de X e Y
Ejemplos: 
 

Entrada: A = 1, B = 9 
Salida:
Explicación: 
Los pares (1, 9), (2, 9), (3, 9), (4, 9), (5, 9), (6, 9 ), (7, 9), (8, 9) y (9, 9) son los pares requeridos.
Entrada: A = 4, B = 10 
Salida:
Explicación: Los pares (4, 9), (5, 9), (6, 9), (7, 9), (8, 9), (9, 9 ) y (10, 9) cumplen la condición requerida. 
 

Enfoque: 
Podemos observar que cualquier número de la forma [9, 99, 999, 9999, ….] satisface la condición con todos los demás valores. 
 

Ilustración: 
Si Y = 9, la condición requerida se cumple para todos los valores de X. 
{1*9 + (1 + 9) = 19, 2*9 + (2 + 9) = 29, ……….. 11* 9 + (11 + 9) = 119 ….. 
Similarmente, para Y = 99, 1*99 + 1 + 99 = 199, 2*99 + 2 + 99 = 299, ……… 
 

Por lo tanto, siga los pasos a continuación para resolver los problemas: 
 

  1. Cuente el número de valores posibles de Y de la forma {9, 99, 999, 9999, ….} en el rango [A, B] y guárdelo en countY
  2. Cuente el número de valores posibles de X en el rango [A, B] como countX 
     
countX = (B - A + 1)
  1.  
  2. La cuenta requerida será el producto de la cuenta posible de X e Y, es decir 
     
answer = countX * countY
  1.  

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

C++

// C++ program to count
// all the possible pairs
// with X*Y + (X + Y) equal to
// number formed by
// concatenating X and Y
 
#include <bits/stdc++.h>
using namespace std;
 
// Function for counting pairs
int countPairs(int A, int B)
{
 
    int countY = 0,
        countX = (B - A) + 1,
        next_val = 9;
 
    // Count possible values
    // of Y
    while (next_val <= B) {
        if (next_val >= A) {
            countY += 1;
        }
        next_val = next_val * 10 + 9;
    }
 
    return (countX * countY);
}
 
// Driver Code
int main()
{
    int A = 1;
    int B = 16;
    cout << countPairs(A, B);
    return 0;
}

Java

// Java program to count
// all the possible pairs
// with X*Y + (X + Y) equal to
// number formed by
// concatenating X and Y
import java.util.*;
class GFG{
 
// Function for counting pairs
static int countPairs(int A, int B)
{
    int countY = 0,
        countX = (B - A) + 1,
        next_val = 9;
 
    // Count possible values
    // of Y
    while (next_val <= B)
    {
        if (next_val >= A)
        {
            countY += 1;
        }
        next_val = next_val * 10 + 9;
    }
    return (countX * countY);
}
 
// Driver Code
public static void main(String args[])
{
    int A = 1;
    int B = 16;
    System.out.print(countPairs(A, B));
}
}
 
// This code is contributed by Code_Mech

Python3

# Python3 program to count
# all the possible pairs
# with X*Y + (X + Y) equal to
# number formed by
# concatenating X and Y
 
# Function for counting pairs
def countPairs(A, B):
 
    countY = 0
    countX = (B - A) + 1
    next_val = 9
 
    # Count possible values
    # of Y
    while (next_val <= B):
        if (next_val >= A):
            countY += 1
        next_val = next_val * 10 + 9
 
    return (countX * countY)
 
# Driver Code
if __name__ == '__main__':
     
    A = 1
    B = 16
     
    print(countPairs(A, B))
 
# This code is contributed by mohit kumar 29

C#

// C# program to count
// all the possible pairs
// with X*Y + (X + Y) equal to
// number formed by
// concatenating X and Y
using System;
class GFG{
 
// Function for counting pairs
static int countPairs(int A, int B)
{
    int countY = 0,
        countX = (B - A) + 1,
        next_val = 9;
 
    // Count possible values
    // of Y
    while (next_val <= B)
    {
        if (next_val >= A)
        {
            countY += 1;
        }
        next_val = next_val * 10 + 9;
    }
    return (countX * countY);
}
 
// Driver Code
public static void Main()
{
    int A = 1;
    int B = 16;
    Console.Write(countPairs(A, B));
}
}
 
// This code is contributed by Akanksha_Rai

Javascript

<script>
// javascript program to count
// all the possible pairs
// with X*Y + (X + Y) equal to
// number formed by
// concatenating X and Y
 
    // Function for counting pairs
    function countPairs(A , B)
    {
        var countY = 0, countX = (B - A) + 1, next_val = 9;
 
        // Count possible values
        // of Y
        while (next_val <= B)
        {
            if (next_val >= A)
            {
                countY += 1;
            }
            next_val = next_val * 10 + 9;
        }
        return (countX * countY);
    }
 
    // Driver Code
        var A = 1;
        var B = 16;
        document.write(countPairs(A, B));
 
// This code is contributed by todaysgaurav
</script>
Producción: 

16

 

Complejidad de tiempo: O(log 10 (B))
Complejidad de espacio: O(1)
 

Publicación traducida automáticamente

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