[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 = '')