Número octal de N dígito más grande que es un cuadrado perfecto

Dado un número natural N , la tarea es encontrar el número octal de N dígitos más grande que sea un cuadrado perfecto.
Ejemplos: 
 

Entrada: N = 1 
Salida:
Explicación: 
4 es el número octal de 1 dígito más grande que también es un cuadrado perfecto
Entrada: N = 2 
Salida: 61 
Explicación: 
49 es el número más grande que es un número octal de 2 dígitos y también un número perfecto cuadrado. 
Por lo tanto 49 en Octal = 61 
 

Planteamiento: 
Se puede observar que la serie de números más grandes que también es un cuadrado perfecto en Octal es: 
 

4, 61, 744, 7601, 77771, 776001….. 
 

Como sabemos, los dígitos en el sistema octal aumentan cuando un número es mayor que 8 k , donde k denota el número de dígitos del número. Entonces, para cualquier número de N dígitos en el sistema numérico octal debe ser menor que el valor de 8 N+1 . Entonces, el término general que se puede derivar usando esta observación es: 
 

Número octal de N dígitos = octal(pow(ceil(sqrt(pow(8, N))) -1, 2)) 
 

A continuación se muestra la implementación del enfoque anterior: 
 

CPP

// C++ implementation to find the maximum
// N-digit octal number which is perfect square
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to convert decimal number
// to a octal number
void decToOctal(int n)
{
 
    // Array to store octal number
    int octalNum[100];
 
    // Counter for octal number array
    int i = 0;
    while (n != 0) {
 
        // Store remainder in
        // octal array
        octalNum[i] = n % 8;
        n = n / 8;
        i++;
    }
 
    // Print octal number array
    // in reverse order
    for (int j = i - 1; j >= 0; j--)
        cout << octalNum[j];
    cout << "\n";
}
 
void nDigitPerfectSquares(int n)
{
    // Largest n-digit perfect square
    int decimal = pow(
        ceil(sqrt(pow(8, n))) - 1, 2
        );
    decToOctal(decimal);
}
 
// Driver Code
int main()
{
    int n = 2;
    nDigitPerfectSquares(n);
 
    return 0;
}

Java

// Java implementation to find the maximum
// N-digit octal number which is perfect square
import java.util.*;
import java.lang.*;
import java.io.*;
 
class GFG
{
     
    // Function to convert decimal number
    // to a octal number
    static void decToOctal(int n)
    {
         
        // Array to store octal number
        int octalNum[] = new int[100];
         
        // Counter for octal number array
        int i = 0;
        while (n != 0)
        {
     
            // Store remainder in
            // octal array
            octalNum[i] = n % 8;
            n = n / 8;
            i++;
        }
     
        // Print octal number array
        // in reverse order
        for (int j = i - 1; j >= 0; j--)
            System.out.print(octalNum[j]);
        System.out.println("\n");
    }
     
    static void nDigitPerfectSquares(int n)
    {
        // Largest n-digit perfect square
        int decimal = (int) Math.pow(Math.ceil(Math.sqrt(Math.pow(8, n))) - 1, 2);
        decToOctal(decimal);
    }
 
    // Driver code
    public static void main (String[] args)
    {
        int n = 2;
        nDigitPerfectSquares(n);
    }
}
 
// This code is contributed by nidhiva

Python3

# Python3 implementation to find the maximum
# N-digit octal number which is perfect square
from math import sqrt,ceil
 
# Function to convert decimal number
# to a octal number
def decToOctal(n) :
 
    # Array to store octal number
    octalNum = [0]*100;
 
    # Counter for octal number array
    i = 0;
    while (n != 0) :
 
        # Store remainder in
        # octal array
        octalNum[i] = n % 8;
        n = n // 8;
        i += 1;
 
    # Print octal number array
    # in reverse order
    for j in range(i - 1, -1, -1) :
        print(octalNum[j], end= "");
    print();
 
def nDigitPerfectSquares(n) :
 
    # Largest n-digit perfect square
    decimal = pow(ceil(sqrt(pow(8, n))) - 1, 2);
    decToOctal(decimal);
 
# Driver Code
if __name__ == "__main__" :
 
    n = 2;
    nDigitPerfectSquares(n);
 
# This code is contributed by AnkitRai01

C#

// C# implementation to find the maximum
// N-digit octal number which is perfect square
using System;
 
class GFG
{
     
    // Function to convert decimal number
    // to a octal number
    static void decToOctal(int n)
    {
         
        // Array to store octal number
        int []octalNum = new int[100];
         
        // Counter for octal number array
        int i = 0;
        while (n != 0)
        {
     
            // Store remainder in
            // octal array
            octalNum[i] = n % 8;
            n = n / 8;
            i++;
        }
     
        // Print octal number array
        // in reverse order
        for (int j = i - 1; j >= 0; j--)
            Console.Write(octalNum[j]);
    Console.WriteLine();
    }
     
    static void nDigitPerfectSquares(int n)
    {
        // Largest n-digit perfect square
        int _decimal = (int) Math.Pow(Math.Ceiling(Math.Sqrt(Math.Pow(8, n))) - 1, 2);
        decToOctal(_decimal);
    }
 
    // Driver code
    public static void Main()
    {
        int n = 2;
        nDigitPerfectSquares(n);
    }
}
 
// This code is contributed by AnkitRai01

Javascript

<script>
 
// Javascript implementation to find the maximum
// N-digit octal number which is perfect square
 
// Function to convert decimal number
// to a octal number
function decToOctal(n)
{
 
    // Array to store octal number
    var octalNum = Array(100).fill(0);
 
    // Counter for octal number array
    var i = 0;
    while (n != 0) {
 
        // Store remainder in
        // octal array
        octalNum[i] = n % 8;
        n = parseInt(n / 8);
        i++;
    }
 
    // Print octal number array
    // in reverse order
    for (var j = i - 1; j >= 0; j--)
        document.write(octalNum[j]);
    document.write("<br>");
}
 
function nDigitPerfectSquares(n)
{
    // Largest n-digit perfect square
    var decimal = Math.pow(
        Math.ceil(Math.sqrt(Math.pow(8, n))) - 1, 2
        );
    decToOctal(decimal);
}
 
// Driver Code
var n = 2;
nDigitPerfectSquares(n);
 
 
</script>
Producción: 

61

 

Complejidad de tiempo: O (log 8 n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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