Dado un número N. Encuentre el conteo de esos números que se pueden formar usando solo los dígitos 3 y 4 y que tienen una longitud máxima de N.
Ejemplos:
Input : N = 2 Output : 6 Explanation : 3, 4, 33, 34, 43, 44 are numbers having length 2 and digits 3 and 4 only. Input : N = 1 Output : 2 Explanation : 3, 4 are the only such numbers.
Aproximación : Hay 2 números de longitud 1. Son 3 y 4. Hay 4 números de longitud 2. Son 33, 34, 43 y 44. Hay 8 números de longitud 3. Son 333, 334, 343 , 344, 433, 434, 443, 444. Por cada adición de 1 a la longitud, el número de números se multiplica por 2.
Es fácil de probar: a cualquier número de la longitud anterior se le puede añadir 3 o 4, por lo que un número de la longitud anterior crea dos números de la siguiente longitud.
Entonces, para la longitud N, la cantidad de tales números de longitud exactamente N es 2*N. Pero en el problema, necesitamos la cantidad de números de longitud no mayor que N. Vamos a resumirlos. 2 1 = 2, 2 1 + 2 2 = 2 + 4 = 6, 2 1 + 2 2 + 23 = 2 + 4 + 8 = 14, 2 1 + 2 2 + 2 3 + 2 4 = 2 + 4 + 8 + 16 = 30.
Uno puede notar que la suma de todas las potencias de dos anteriores es igual a la siguiente potencia de dos menos la primera potencia de dos. Entonces, la respuesta al problema es 2 N+1 – 2.
A continuación se muestra la implementación del enfoque anterior:
C++
// Cpp program to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. #include <bits/stdc++.h> using namespace std; // Function to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. long long numbers(int n) { return (long long)(pow(2, n + 1)) - 2; } // Driver code int main() { int n = 2; cout << numbers(n); return 0; }
Java
// Java program to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. class GFG { // Function to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. static long numbers(int n) { return (long)(Math.pow(2, n + 1)) - 2; } // Driver code public static void main(String args[]) { int n = 2; System.out.println( numbers(n)); } } // This code is contributed by Arnab Kundu
Python3
# Python3 program to find the count of # numbers that can be formed using digits # 3, 4 only and having length at max N. # Function to find the count of numbers # that can be formed using digits 3, 4 # only and having length at max N. def numbers(n): return pow(2, n + 1) - 2 # Driver code n = 2 print(numbers(n)) # This code is contributed # by Shrikant13
C#
// C# program to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. using System; class GFG { // Function to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. static long numbers(int n) { return (long)(Math.Pow(2, n + 1)) - 2; } // Driver code static void Main() { int n = 2; Console.WriteLine( numbers(n)); } } // This code is contributed by mits
PHP
<?php // PHP program to find the count of // numbers that can be formed using // digits 3, 4 only and having length // at max N. // Function to find the count of numbers // that can be formed using digits 3, 4 only // and having length at max N. function numbers($n) { return (pow(2, $n + 1)) - 2; } // Driver code $n = 2; echo numbers($n); // This code is contributed // by Akanksha Rai ?>
Javascript
<script> // javascript program to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. // Function to find the count of numbers that // can be formed using digits 3, 4 only and // having length at max N. function numbers(n) { return (Math.pow(2, n + 1)) - 2; } // Driver code var n = 2; document.write(numbers(n)); // This code is contributed by Princi Singh </script>
6
Complejidad de tiempo: O (log n)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por pawan_asipu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA