Número de números enteros de N dígitos con peso W

Dado N, el número de dígitos de un número entero que es mayor o igual a 2 y un peso W. La tarea es encontrar el conteo de números enteros que tienen N dígitos y peso W.
Nota : El peso se define como la diferencia entre el dígitos consecutivos de un número entero. 
 

Ejemplos

Input : N = 2, W = 3
Output : 6

Input : N = 2, W = 4
Output : 5

En el ejemplo anterior, el total de enteros posibles de 2 dígitos con peso igual a 3 será 6. Al igual que el número 14 tiene peso 3 (4-1) y 25, 36, 47, 58, 69 tiene peso 3. Si vemos con cuidado, encontraremos la lógica de que si incrementamos el peso como 5 de un número de 2 dígitos, entonces el total de esos números posibles será 5. Con el peso 6 de un número de 2 dígitos, el total de números posibles será 4 y luego 3 y así sucesivamente. Además, si aumentamos el número de dígitos. Digamos, n igual a 3 con peso 3, entonces los números totales posibles serán 60 y 600 para n igual a 4 con peso 3 y así sucesivamente.
Número de dígitos | Peso —> Total de tales números posibles 
 

2|2 —> 7 2|3 —> 6 2|4 —> 5 2|5 —> 4 2|6 —> 3 2|7 —> 2 2|8 —> 1
3|2 —> 70 3|3 —> 60 3|4 —> 50 3|5 —> 40 3|6 —> 30 3|7 —> 20 3|8 —> 10
4|2 —>700 4|3 —>600 4|4 —>500 4|5 —>400 4|6 —>300 4|7 —>200 4|8 —>100

Como puede ver en la tabla anterior, con un aumento en la cantidad de dígitos, la cantidad de números con peso ‘w’ sigue un patrón, donde cambia en el múltiplo de 10^(n-2), donde ‘ n’ es el número de dígitos.
A continuación se muestra el algoritmo paso a paso para resolver este problema: 

  1. Compruebe si el Peso (W) dado es Positivo o Negativo.
  2. Reste Peso (W) de 9 si es positivo.
  3. Agregue Peso a 10 si es negativo y luego actualice el nuevo peso.
  4. Para un entero de n dígitos, multiplique 10^(n-2) con este peso actualizado.
  5. Esto nos dará el número de enteros que satisfacen este peso.

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

C++

// CPP program to find total possible numbers
// with n digits and weight w
 
#include <iostream>
#include<cmath>
 
using namespace std;
 
// Function to find total possible numbers
// with n digits and weight w
int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an integer is Positive
    if (w >= 0 && w <= 8) {
        // Subtract the weight from 9
        x = 9 - w;
    }
    // When weight of an integer is negative
    else if (w >= -9 && w <= -1) {
        // add the weight to 10 to make it positive
        x = 10 + w;
    }
     
    sum = pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
int main()
{
    int n, w;
 
    // number of digits in an
    // integer and w as weight
    n = 3, w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    cout << findNumbers(n, w);;
 
    return 0;
}

Java

// Java program to find total
// possible numbers with n
// digits and weight w
 
class GFG
{
     
// Function to find total
// possible numbers with n
// digits and weight w
static int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an
    // integer is Positive
    if (w >= 0 && w <= 8)
    {
        // Subtract the weight from 9
        x = 9 - w;
    }
     
    // When weight of an
    // integer is negative
    else if (w >= -9 && w <= -1)
    {
        // add the weight to 10
        // to make it positive
        x = 10 + w;
    }
     
    sum = (int)Math.pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
public static void main(String args[])
{
    int n, w;
 
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    System.out.println(findNumbers(n, w));
}
}
 
// This code is contributed
// by ankita_saini

Python3

# Python3 program to find total possible
# numbers with n digits and weight w
 
# Function to find total possible
# numbers with n digits and weight w
def findNumbers(n, w):
 
    x = 0;
    sum = 0;
 
    # When Weight of an integer
    # is Positive
    if (w >= 0 and w <= 8):
        # Subtract the weight from 9
        x = 9 - w;
     
    # When weight of an integer
    # is negative
    elif (w >= -9 and w <= -1):
         
        # add the weight to 10 to
        # make it positive
        x = 10 + w;
     
    sum = pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
 
# Driver code
 
# number of digits in an
# integer and w as weight
n = 3;
w = 4;
 
# print the total possible numbers
# with n digits and weight w
print(findNumbers(n, w));
 
# This code is contributed
# by mits

C#

// C# program to find total possible
// numbers with n digits and weight w
using System;
 
class GFG
{
     
// Function to find total possible
// numbers with n digits and weight w
static int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an integer
    // is Positive
    if (w >= 0 && w <= 8)
    {
        // Subtract the weight from 9
        x = 9 - w;
    }
     
    // When weight of an
    // integer is negative
    else if (w >= -9 && w <= -1)
    {
        // add the weight to 10
        // to make it positive
        x = 10 + w;
    }
     
    sum = (int)Math.Pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
static public void Main ()
{
    int n, w;
     
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    Console.WriteLine(findNumbers(n, w));
}
}
 
// This code is contributed by jit_t

PHP

<?php
// PHP program to find total possible
// numbers with n digits and weight w
 
// Function to find total possible
// numbers with n digits and weight w
function findNumbers($n, $w)
{
    $x = 0; $sum = 0;
 
    // When Weight of an integer
    // is Positive
    if ($w >= 0 && $w <= 8)
    {
        // Subtract the weight from 9
        $x = 9 - $w;
    }
     
    // When weight of an integer
    // is negative
    else if ($w >= -9 && $w <= -1)
    {
        // add the weight to 10 to
        // make it positive
        $x = 10 + $w;
    }
     
    $sum = pow(10, $n - 2);
    $sum = ($x * $sum);
     
    return $sum;
}
 
// Driver code
 
// number of digits in an
// integer and w as weight
$n = 3; $w = 4;
 
// print the total possible numbers
// with n digits and weight w
echo findNumbers($n, $w);
 
// This code is contributed
// by Akanksha Rai

Javascript

<script>
    // Javascript program to find total possible
    // numbers with n digits and weight w
     
    // Function to find total possible
    // numbers with n digits and weight w
    function findNumbers(n, w)
    {
        let x = 0, sum = 0;
 
        // When Weight of an integer
        // is Positive
        if (w >= 0 && w <= 8)
        {
            // Subtract the weight from 9
            x = 9 - w;
        }
 
        // When weight of an
        // integer is negative
        else if (w >= -9 && w <= -1)
        {
            // add the weight to 10
            // to make it positive
            x = 10 + w;
        }
 
        sum = Math.pow(10, n - 2);
        sum = (x * sum);
 
        return sum;
    }
     
    let n, w;
       
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
       
    // print the total possible numbers
    // with n digits and weight w
    document.write(findNumbers(n, w));
     
</script>
Producción: 

50

 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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