Dado un número entero N , la tarea es imprimir una secuencia de longitud N que consta de números pares e impares alternos en orden creciente de modo que la suma de dos términos consecutivos sea un cuadrado perfecto .
Ejemplos:
Entrada: N = 4
Salida: 1 8 17 32
Explicación:
1 + 8 = 9 = 3 2
8 + 17 = 25 = 5 2
17 + 32 = 49 = 7 2Entrada: N = 2
Salida: 1 8
Enfoque: El problema dado se puede resolver basándose en la observación de los ejemplos anteriores, que para un número entero N , la secuencia será de la forma 1, 8, 17, 32, 49 y así sucesivamente. Por lo tanto, el término N se puede calcular mediante la siguiente ecuación :
Por lo tanto, para resolver el problema, recorre el rango [1, N] para calcular e imprimir cada término de la secuencia usando la fórmula anterior.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program to implement // the above approach #include <iostream> using namespace std; // Function to print the // required sequence void findNumbers(int n) { int i = 0; while (i <= n) { // Print ith odd number cout << 2 * i * i + 4 * i + 1 + i % 2 << " "; i++; } } // Driver Code int main() { int n = 6; findNumbers(n); }
Java
// Java program to implement // the above approach import java.util.*; class GFG{ // Function to print the // required sequence static void findNumbers(int n) { int i = 0; while (i <= n) { // Print ith odd number System.out.print(2 * i * i + 4 * i + 1 + i % 2 + " "); i++; } } // Driver code public static void main (String[] args) { int n = 6; // Function call findNumbers(n); } } // This code is contributed by offbeat
Python3
# Python3 program to implement # the above approach # Function to print the # required sequence def findNumbers(n): i = 0 while (i <= n): # Print ith odd number print(2 * i * i + 4 * i + 1 + i % 2, end = " ") i += 1 # Driver Code n = 6 findNumbers(n) # This code is contributed by sanjoy_62
C#
// C# program to implement // the above approach using System; class GFG{ // Function to print the // required sequence static void findNumbers(int n) { int i = 0; while (i <= n) { // Print ith odd number Console.Write(2 * i * i + 4 * i + 1 + i % 2 + " "); i++; } } // Driver code public static void Main () { int n = 6; // Function call findNumbers(n); } } // This code is contributed by sanjoy_62
Javascript
<script> // Javascript Program to implement // the above approach // Function to print the // required sequence function findNumbers(n) { var i = 0; while (i <= n) { // Print ith odd number document.write(2 * i * i + 4 * i + 1 + i % 2+" "); i++; } } // Driver Code var n = 6; findNumbers(n); </script>
1 8 17 32 49 72 97
Complejidad temporal: O(N)
Espacio auxiliar: O(1)