아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

새로운 수학

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

요약
10진수에서 올림을 버리는 무올림 곱셈으로 a를 제곱한 값이 N이 되는 가장 작은 양의 정수 a를 구하고, 없으면 -1을 출력한다.
난이도

보통10점 중 7점

유형
수학, 백트래킹, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

"이런!" 찰스가 소리쳤다. "이 멍청한 올림 자막이 내 엔진에서 작동하지 않아! 방금 어떤 수의 제곱을 계산하려 했는데, 결과가 틀렸어. 올림이 전부 사라졌어."

"흠," 에이다가 생각에 잠겨 말했다. "올림 없는 산술이라니! 엔진에 보이는 결과를 보고 네가 원래 입력한 값이 무엇이었는지 알아낼 수 있을지 궁금하네."

⊕\oplus로 표기하는 올림 없는 덧셈은 (10진법에서) 올림을 무시한다는 점만 빼면 일반 덧셈과 같다. 따라서 37⊕4837 \oplus 48은 8585가 아니라 7575이다.

⊗\otimes로 표기하는 올림 없는 곱셈은 학교에서 배우는 곱셈 알고리즘처럼 열별로 수행하되, 중간 덧셈을 올림 없는 덧셈으로 계산한다. 더 형식적으로, aa의 자릿수를 a_ma_m−1…a_1a_0a\_m a\_{m-1} \ldots a\_1 a\_0라 하자. 여기서 a_0a\_0은 최하위 자릿수이다. 마찬가지로 bb의 자릿수를 b_nb_n−1…b_1b_0b\_n b\_{n-1} \ldots b\_1 b\_0라 하자. c=a⊗bc = a \otimes b의 자릿수는 다음 식으로 주어진다. [ c_k = \left( a_0 b_k \oplus a_1 b_{k-1} \oplus \cdots \oplus a_{k-1} b_1 \oplus a_k b_0 \right) \bmod{10}, ] 여기서 i>mi > m이거나 j>nj > n이면 a_ia\_i 또는 b_jb\_j는 0으로 본다. 예를 들어 9⊗1 2349 \otimes 1\,234는 9 8769\,876이고, 90⊗1 23490 \otimes 1\,234는 98 76098\,760이며, 99⊗1 23499 \otimes 1\,234는 97 53697\,536이다.

NN이 주어질 때, a⊗a=Na \otimes a = N을 만족하는 가장 작은 양의 정수 aa를 구하라.

입력

입력은 한 줄로 주어지며, 자릿수가 최대 2525자리이고 앞에 0이 없는 양의 정수 NN이 들어 있다.

출력

a⊗a=Na \otimes a = N을 만족하는 가장 작은 양의 정수 aa를 한 줄에 출력한다. 그러한 aa가 없으면 대신 '-1'을 출력한다.

예제4

  1. 예제 1

    입력
    6
    
    예상 출력
    4
    
  2. 예제 2

    입력
    149
    
    예상 출력
    17
    
  3. 예제 3

    입력
    123476544
    
    예상 출력
    11112
    
  4. 예제 4

    입력
    15
    
    예상 출력
    -1