Considere una secuencia que comienza con un 1 en una máquina. En cada paso sucesivo, la máquina transforma simultáneamente cada dígito 0 en la secuencia 10 y cada dígito 1 en la secuencia 01.
Después del primer paso de tiempo, se obtiene la secuencia 01; después del segundo, la secuencia 1001, después del tercero, la secuencia 01101001 y así sucesivamente.
¿Cuántos pares de ceros consecutivos aparecerán en la secuencia después de n pasos?
Ejemplos:
Input : Number of steps = 3 Output: 1 // After 3rd step sequence will be 01101001 Input : Number of steps = 4 Output: 3 // After 4rd step sequence will be 1001011001101001 Input : Number of steps = 5 Output: 5 // After 3rd step sequence will be 01101001100101101001011001101001
Este es un problema de razonamiento simple. Si observamos la secuencia con mucho cuidado, podremos encontrar un patrón para la secuencia dada. Si n=1 la secuencia será {01} entonces el número de pares de ceros consecutivos será 0, si n = 2 la secuencia será {1001} entonces el número de pares de ceros consecutivos será 1, si n=3 la secuencia será {01101001} entonces el número de pares de ceros consecutivos es 1,
si n=4 la secuencia será {1001011001101001} entonces el número de pares de ceros consecutivos es 3.
Por lo tanto, la longitud de la secuencia siempre será una potencia de 2. Podemos ver después de la secuencia de longitud 12 se repite y tiene longitudes de 12. Y en un segmento de longitud 12, hay un total de 2 pares de ceros consecutivos. Por lo tanto, podemos generalizar el patrón dado q = (2^n/12) y el total de pares de ceros consecutivos será 2*q+1.
C++
// C++ program to find number of consecutive // 0s in a sequence #include<bits/stdc++.h> using namespace std; // Function to find number of consecutive Zero Pairs // Here n is number of steps int consecutiveZeroPairs(int n) { // Base cases if (n==1) return 0; if (n==2 || n==3) return 1; // Calculating how many times divisible by 12, i.e., // count total number repeating segments of length 12 int q = (pow(2, n) / 12); // number of consecutive Zero Pairs return 2 * q + 1; } // Driver code int main() { int n = 5; cout << consecutiveZeroPairs(n) << endl; return 0; }
Java
//Java program to find number of // consecutive 0s in a sequence import java.io.*; import java.math.*; class GFG { // Function to find number of consecutive // Zero Pairs. Here n is number of steps static int consecutiveZeroPairs(int n) { // Base cases if (n == 1) return 0; if (n == 2 || n == 3) return 1; // Calculating how many times divisible // by 12, i.e.,count total number // repeating segments of length 12 int q = ((int)(Math.pow(2, n)) / 12); // number of consecutive Zero Pairs return (2 * q + 1); } // Driver code public static void main(String args[]) { int n = 5; System.out.println(consecutiveZeroPairs(n)); } } // This code is contributed by Nikita Tiwari.
Python3
# Python program to find number of # consecutive 0s in a sequence import math # Function to find number of consecutive # Zero Pairs. Here n is number of steps def consecutiveZeroPairs(n) : # Base cases if (n == 1) : return 0 if (n == 2 or n == 3) : return 1 # Calculating how many times divisible # by 12, i.e.,count total number # repeating segments of length 12 q =(int) (pow(2,n) / 12) # number of consecutive Zero Pairs return 2 * q + 1 # Driver code n = 5 print (consecutiveZeroPairs(n)) #This code is contributed by Nikita Tiwari.
C#
// C# program to find number of // consecutive 0s in a sequence using System; class GFG { // Function to find number of // consecutive Zero Pairs. // Here n is number of steps static int consecutiveZeroPairs(int n) { // Base cases if (n == 1) return 0; if (n == 2 || n == 3) return 1; // Calculating how many times divisible // by 12, i.e.,count total number // repeating segments of length 12 int q = ((int)(Math.Pow(2, n)) / 12); // number of consecutive Zero Pairs return (2 * q + 1); } // Driver Code public static void Main() { int n = 5; Console.Write(consecutiveZeroPairs(n)); } } // This code is contributed by Nitin mittal.
PHP
<?php // PHP program to find number // of consecutive 0s in a sequence // Function to find number // of consecutive Zero Pairs // Here n is number of steps function consecutiveZeroPairs($n) { // Base cases if ($n == 1) return 0; if ($n == 2 || $n == 3) return 1; // Calculating how many times // divisible by 12, i.e., count // total number repeating segments // of length 12 $q = floor(pow(2, $n) / 12); // number of consecutive Zero Pairs return 2 * $q + 1; } // Driver code $n = 5; echo consecutiveZeroPairs($n) ; // This code is contributed // by nitin mittal. ?>
Javascript
<script> //javascript program to find number of // consecutive 0s in a sequence // Function to find number of consecutive // Zero Pairs. Here n is number of steps function consecutiveZeroPairs(n) { // Base cases if (n == 1) return 0; if (n == 2 || n == 3) return 1; // Calculating how many times divisible // by 12, i.e.,count total number // repeating segments of length 12 var q =(parseInt((Math.pow(2, n)) / 12)); // number of consecutive Zero Pairs return (2 * q + 1); } // Driver code var n = 5; document.write(consecutiveZeroPairs(n)); // This code is contributed by umadevi9616 </script>
Producción :
5
Este artículo es una contribución de Shashank Mishra (Gullu) . este artículo está revisado por el equipo GeeksForGeeks.
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