Related Articles

Related Articles

Largest N digit Octal number which is a Perfect square
  • Last Updated : 04 Mar, 2020

Given a natural number N, the task is to find the largest N digit Octal number which is a perfect square.

Examples:

Input: N = 1
Output: 4
Explanation:
4 is the largest 1 digit Octal number which is also perfect square

Input: N = 2
Output: 61
Explanation:
49 is the largest number which is a 2-Digit Octal Number and also a perfect square.
Therefore 49 in Octal = 61

Approach:
It can be observed that the series of largest numbers which is also a perfect square in Octal is:



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

As we know the digits in the octal system increases when a number Greater than 8k where k denotes the number of digits in the number. So for any N digit number in the octal number system must be less than the value of 8N+1. So, the general term that can be derived using this observation is –

N-Digit Octal Number = octal(pow(ceil(sqrt(pow(8, N))) -1, 2))

Below is the implementation of the above approach:

CPP

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

61

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :