Encuentre el elemento n-th en una serie con solo 2 dígitos (4 y 7) permitidos

Considere una serie de números compuesta solo por los dígitos 4 y 7. Los primeros números de la serie son 4, 7, 44, 47, 74, 44744, etc. Dado un número n, necesitamos encontrar el n-ésimo número en las series.
Ejemplos: 
 

Input : n = 2
Output : 7

Input : n = 3
Output : 44

Input  : n = 5
Output : 74

Input  : n = 6
Output : 77

La idea se basa en el hecho de que el valor del último dígito se alterna en serie. Por ejemplo, si el último dígito del i-ésimo número es 4, entonces el último dígito de (i-1)-ésimo y (i+1)-ésimo número debe ser 7.
Creamos una array de tamaño (n+1) y empuje 4 y 7 (Estos dos son siempre los dos primeros elementos de la serie) hacia él. Para más elementos verificamos 
1) Si i es impar, 
      arr[i] = arr[i/2]*10 + 4; 
2) Si es par, 
      arr[i] = arr[(i/2)-1]*10 + 7; 
Por fin regresa arr[n].
 

C++

// C++ program to find n-th number in a series
// made of digits 4 and 7
#include <bits/stdc++.h>
using namespace std;
 
// Return n-th number in series made of 4 and 7
int printNthElement(int n)
{
    // create an array of size (n+1)
    int arr[n+1];
    arr[1] = 4;
    arr[2] = 7;
 
    for (int i=3; i<=n; i++)
    {
        // If i is odd
        if (i%2 != 0)
            arr[i] = arr[i/2]*10 + 4;
        else
            arr[i] = arr[(i/2)-1]*10 + 7;
    }
    return arr[n];
}
 
// Driver code
int main()
{
    int n = 6;
    cout << printNthElement(n);
    return 0;
}

Java

// Java program to find n-th number in a series
// made of digits 4 and 7
 
class FindNth
{
    // Return n-th number in series made of 4 and 7
    static int printNthElement(int n)
    {
        // create an array of size (n+1)
        int arr[] = new int[n+1];
        arr[1] = 4;
        arr[2] = 7;
      
        for (int i=3; i<=n; i++)
        {
            // If i is odd
            if (i%2 != 0)
                arr[i] = arr[i/2]*10 + 4;
            else
                arr[i] = arr[(i/2)-1]*10 + 7;
        }
        return arr[n];
    }   
     
    // main function
    public static void main (String[] args)
    {
        int n = 6;
        System.out.println(printNthElement(n));
    }
}

Python3

# Python3 program to find n-th number
# in a series made of digits 4 and 7
 
# Return n-th number in series made
# of 4 and 7
def printNthElement(n) :
     
    # create an array of size (n + 1)
    arr =[0] * (n + 1);
    arr[1] = 4
    arr[2] = 7
 
    for i in range(3, n + 1) :
        # If i is odd
        if (i % 2 != 0) :
            arr[i] = arr[i // 2] * 10 + 4
        else :
            arr[i] = arr[(i // 2) - 1] * 10 + 7
     
    return arr[n]
     
# Driver code
n = 6
print(printNthElement(n))
 
# This code is contributed by Nikita Tiwari.

C#

// C# program to find n-th number in a series
// made of digits 4 and 7
using System;
 
class GFG
{
    // Return n-th number in series made of 4 and 7
    static int printNthElement(int n)
    {
        // create an array of size (n+1)
        int []arr = new int[n+1];
        arr[1] = 4;
        arr[2] = 7;
     
        for (int i = 3; i <= n; i++)
        {
            // If i is odd
            if (i % 2 != 0)
                arr[i] = arr[i / 2] * 10 + 4;
            else
                arr[i] = arr[(i / 2) - 1] * 10 + 7;
        }
        return arr[n];
    }
     
    // Driver code
    public static void Main ()
    {
        int n = 6;
        Console.Write(printNthElement(n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to find n-th
// number in a series
// made of digits 4 and 7
 
// Return n-th number in
// series made of 4 and 7
function printNthElement($n)
{
     
    // create an array
    // of size (n+1)
    $arr[1] = 4;
    $arr[2] = 7;
 
    for ($i = 3; $i <= $n; $i++)
    {
         
        // If i is odd
        if ($i % 2 != 0)
            $arr[$i] = $arr[$i / 2] *
                               10 + 4;
        else
            $arr[$i] = $arr[($i / 2) - 1] *
                                    10 + 7;
    }
    return $arr[$n];
}
 
// Driver code
$n = 6;
echo(printNthElement($n));
 
// This code is contributed by Ajit.
?>

Javascript

<script>
// javascript program to find n-th number in a series
// made of digits 4 and 7
 
 
    // Return n-th number in series made of 4 and 7
    function printNthElement(n) {
        // create an array of size (n+1)
        var arr = Array(n + 1).fill(0);
        arr[1] = 4;
        arr[2] = 7;
 
        for (var i = 3; i <= n; i++) {
            // If i is odd
            if (i % 2 != 0)
                arr[i] = arr[i / 2] * 10 + 4;
            else
                arr[i] = arr[(i / 2) - 1] * 10 + 7;
        }
        return arr[n];
    }
 
    // main function
     
        var n = 6;
        document.write(printNthElement(n));
 
// This code is contributed by Princi Singh
</script>

Producción: 
 

77

Complejidad de tiempo: O(n) desde que se usó un bucle for

Encuentre el n-ésimo elemento en una serie con solo 2 dígitos (4 y 7) permitidos | Conjunto 2 (método log(n)) Roshni Agarwal
contribuye con este artículo . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

 

Publicación traducida automáticamente

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