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