给定一个整数N ,任务是检查给定的数字是否为一个完美的平方,其所有数字均为完美的平方。如果发现是真的,则打印“是” 。否则,打印“否” 。
例子:
Input: N = 144
Output: Yes
Explanation:
The number 144 is a perfect square and also the digits of the number {1(= 12, 4(= 22} is also a perfect squares.
Input: N = 81
Output: No
方法:想法是检查给定的数字N是否是一个完美的平方。如果发现为真,检查是否所有的位是0或者1,4,或9。如果发现是真的,则打印“是” 。否则,打印“否” 。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
using namespace std;
// Function to check if digits of
// N is a perfect square or not
bool check_digits(long N)
{
// Iterate over the digits
while (N > 0) {
// Extract the digit
int n = N % 10;
// Check if digit is a
// perfect square or not
if ((n != 0) && (n != 1)
&& (n != 4) && (n != 9)) {
return 0;
}
// Divide N by 10
N = N / 10;
}
// Return true
return 1;
}
// Function to check if N is
// a perfect square or not
bool is_perfect(long N)
{
long double n = sqrt(N);
// If floor and ceil of n
// is not same
if (floor(n) != ceil(n)) {
return 0;
}
return 1;
}
// Function to check if N satisfies
// the required conditions or not
void isFullSquare(long N)
{
// If both the conditions
// are satisfied
if (is_perfect(N)
&& check_digits(N)) {
cout << "Yes";
}
else {
cout << "No";
}
}
// Driver Code
int main()
{
long N = 144;
// Function Call
isFullSquare(N);
return 0;
}
Java
// Java program for
// the above approach
import java.util.*;
class GFG{
// Function to check if digits of
// N is a perfect square or not
static boolean check_digits(long N)
{
// Iterate over the digits
while (N > 0)
{
// Extract the digit
int n = (int) (N % 10);
// Check if digit is a
// perfect square or not
if ((n != 0) && (n != 1) &&
(n != 4) && (n != 9))
{
return false;
}
// Divide N by 10
N = N / 10;
}
// Return true
return true;
}
// Function to check if N is
// a perfect square or not
static boolean is_perfect(long N)
{
double n = Math.sqrt(N);
// If floor and ceil of n
// is not same
if (Math.floor(n) != Math.ceil(n))
{
return false;
}
return true;
}
// Function to check if N satisfies
// the required conditions or not
static void isFullSquare(long N)
{
// If both the conditions
// are satisfied
if (is_perfect(N) &&
check_digits(N))
{
System.out.print("Yes");
}
else
{
System.out.print("No");
}
}
// Driver Code
public static void main(String[] args)
{
long N = 144;
// Function Call
isFullSquare(N);
}
}
// This code is contributed by Rajput-Ji
Python3
# Python3 program for the above approach
import math
# Function to check if digits of
# N is a perfect square or not
def check_digits(N):
# Iterate over the digits
while (N > 0):
# Extract the digit
n = N % 10
# Check if digit is a
# perfect square or not
if ((n != 0) and (n != 1) and
(n != 4) and (n != 9)):
return 0
# Divide N by 10
N = N // 10
# Return true
return 1
# Function to check if N is
# a perfect square or not
def is_perfect(N):
n = math.sqrt(N)
# If floor and ceil of n
# is not same
if (math.floor(n) != math.ceil(n)):
return 0
return 1
# Function to check if N satisfies
# the required conditions or not
def isFullSquare(N):
# If both the conditions
# are satisfied
if (is_perfect(N) and
check_digits(N)):
print("Yes")
else:
print("No")
# Driver Code
N = 144
# Function call
isFullSquare(N)
# This code is contributed by sanjoy_62
C#
// C# program for
// the above approach
using System;
class GFG{
// Function to check if digits of
// N is a perfect square or not
static bool check_digits(long N)
{
// Iterate over the digits
while (N > 0)
{
// Extract the digit
int n = (int) (N % 10);
// Check if digit is a
// perfect square or not
if ((n != 0) && (n != 1) &&
(n != 4) && (n != 9))
{
return false;
}
// Divide N by 10
N = N / 10;
}
// Return true
return true;
}
// Function to check if N is
// a perfect square or not
static bool is_perfect(long N)
{
double n = Math.Sqrt(N);
// If floor and ceil of n
// is not same
if (Math.Floor(n) != Math.Ceiling(n))
{
return false;
}
return true;
}
// Function to check if N satisfies
// the required conditions or not
static void isFullSquare(long N)
{
// If both the conditions
// are satisfied
if (is_perfect(N) &&
check_digits(N))
{
Console.Write("Yes");
}
else
{
Console.Write("No");
}
}
// Driver Code
public static void Main()
{
long N = 144;
// Function Call
isFullSquare(N);
}
}
// This code is contributed by Chitranayal
Javascript
输出:
Yes
时间复杂度: O(log 10 N)
辅助空间: O(1)