대칭제곱수

시간 제한1초메모리 제한1024 MB

요약
주어진 정수가 제곱수이고, 그 수를 뒤집은 수(앞의 0은 무시)도 제곱수인지 판별한다.
난이도

보통10점 중 4점

유형
수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

M=A2M=A^2인 정수 AA가 존재할 때 MM을 제곱수라고 한다. 만약 제곱수 MM을 뒤집어 얻은 수도 제곱수라면 MM을 대칭제곱수라고 하자. 예를 들어 제곱수 121121의 경우 뒤집은 수 121121 역시 제곱수이므로 대칭제곱수이지만, 4949의 경우 뒤집은 수 9494가 제곱수가 아니므로 대칭제곱수가 아니다. 단, 뒤집었을 때 가장 앞의 00을 무시한다는 점에 유의한다. 예를 들어 1010010100을 뒤집으면 0010100101이 되지만 가장 앞의 00을 무시하면 101101이 된다.

정수가 주어질 때마다 대칭제곱수인지 판별하는 프로그램을 작성하시오.

입력

첫 번째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤105)(1 \leq T \leq 10^5)

두 번째 줄부터 TT개의 줄에 걸쳐 정수 NN이 주어진다. (1≤N≤1018)(1 \leq N \leq 10^{18})

출력

각 테스트 케이스에 대해 NN이 대칭제곱수라면 YES, 아니면 NO를 출력한다.

예제1

  1. 예제 1

    입력
    2
    9
    3
    
    예상 출력
    YES
    NO