[Bronze III] 2025는 무엇이 특별할까? - 33541

문제 링크

성능 요약

메모리: 32412 KB, 시간: 36 ms

분류

수학, 브루트포스 알고리즘

제출 일자

2026년 4월 1일 10:10:37

문제 설명

네 자리 연도에 대해, 연도의 앞 두 자리와 뒤 두 자리를 더한 뒤 제곱한 값이 원래 연도와 같은 해를 “특별한 해” 라고 부른다.

예를 들어, $2025$년은 $(20+25)^2=45^2=2025$ 이므로 특별한 해이다.

하지만, $3005$년은 $(30+05)^2=35^2=1225\neq 3005$ 이므로 특별한 해가 아니다.

네 자릿수 $X$가 주어지면, $(X+1)$년 또는 그 이후에 있는 가장 빠른 “특별한 해”가 언제인지 구하자.

입력

첫 번째 줄에 정수 $X$가 주어진다.

출력

$(X+1)$년 또는 그 이후에 있는 가장 빠른 “특별한 해”가 $Y$년이라면, 정수 $Y$를 첫 번째 줄에 출력한다.

만약 그런 해가 존재하지 않는다면 대신 $-1$을 출력한다.


💡 해결 방법

💻 코드

# 시간 제한	메모리 제한
# 1 초 (추가 시간 없음)	1024 MB (추가 메모리 없음)
# 문제
# 네 자리 연도에 대해, 연도의 앞 두 자리와 뒤 두 자리를 더한 뒤 제곱한 값이 원래 연도와 같은 해를 “특별한 해” 라고 부른다.
 
# 예를 들어, 
# $2025$년은 
# $(20+25)^2=45^2=2025$ 이므로 특별한 해이다.
 
# 하지만, 
# $3005$년은 
# $(30+05)^2=35^2=1225\neq 3005$ 이므로 특별한 해가 아니다.
 
# 네 자릿수 
# $X$가 주어지면, 
# $(X+1)$년 또는 그 이후에 있는 가장 빠른 “특별한 해”가 언제인지 구하자.
 
# 입력
# 첫 번째 줄에 정수 
# $X$가 주어진다.
 
# 출력
#  
# $(X+1)$년 또는 그 이후에 있는 가장 빠른 “특별한 해”가 
# $Y$년이라면, 정수 
# $Y$를 첫 번째 줄에 출력한다.
 
# 만약 그런 해가 존재하지 않는다면 대신 
# $-1$을 출력한다.
 
# 제한
# 주어지는 모든 수는 정수이다.
#  
# $1\, 000\le X\le 9\, 999$ 
# 예제 입력 1 
# 2024
# 예제 출력 1 
# 2025
# 예제 입력 2 
# 2025
# 예제 출력 2 
# 3025
# 예제 입력 3 
# 9999
# 예제 출력 3 
# -1
 
def check(x):
    a = ((x//1000) % 10) * 10 + ((x // 100) % 10)
    b = ((x // 10) % 10) * 10 + (x //1) % 10
    return (a + b)* (a + b)  == x
 
x = int(input())
 
#print(check(3025))
 
for i in range(x + 1 if x + 1 <= 9999 else (9999 + 1), 9999 + 1):
    if check(i):
        print(i, end = '')
        quit()
 
print('-1', end = '')