Python/Beakjoon

2028번: 자기복제수

hyunjoo 2021. 8. 25. 17:38

2028번: 자기복제수 (acmicpc.net)

 

2028번: 자기복제수

어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가

www.acmicpc.net

>>

입력받은 수가 한자릿수라면 제곱한 값의 마지막 한자릿수가 같고

두자릿수라면 제곱한 값의 뒤에서 두번째수부터 같고

세자릿수라면 제곱한 값의 뒤에서 세번째수부터 같으면 된다.

입력받은 수가 1000일때는 자기복제수가 아니다.

숫자로 입력받았지만 문자열 형태로 저장되었기 때문에 문자열로 비교한다.

T=int(input())

for i in range(T):
    N=input()
    mul=int(N)**2
    if len(N)==1:
        if str(mul)[-1]==N:
            print("YES")
        else:
            print("NO")
    elif len(N)==2:
        if str(mul)[-2:]==N:
            print("YES")
        else:
            print("NO")
    elif len(N) == 3:
        if str(mul)[-3:] == N:
            print("YES")
        else:
            print("NO")
    elif N=='1000':
        print("NO")
반응형