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

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

유연한 구간

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

요약
각 n(최대 10000)에 대해, 연속한 n개의 양의 정수에서 각 원소를 +1 또는 -1만큼 바꿔도 곱이 그대로 유지되도록 하는 구간이 존재하는지 판정하고, 존재하면 시작값과 부호를 출력한다.
난이도

어려움10점 중 8점

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

문제

위대한 수학자 블라디미르 게르마노비치(Vladimir Germanovich)는 새로운 패턴을 찾던 중 양의 정수로 이루어진 일부 구간에서 흥미로운 성질을 발견했다.

블라디미르는 양의 정수 구간 l,l+1,…,rl, l + 1, \ldots, r을(를) 유연하다고 부른다. 이 구간의 모든 수를 각각 정확히 1만큼 바꾸어도 구간에 있는 수들의 곱이 변하지 않을 때 그렇다. 즉, 다음 성질을 만족하는 수열 al,al+1,…,ara_l, a_{l+1}, \ldots, a_r이 존재한다.

  • ak=k±1a_k = k \pm 1
  • l⋅(l+1)⋅…⋅r=al⋅al+1⋅…⋅arl \cdot (l+1)\cdot \ldots \cdot r = a_l \cdot a_{l+1} \cdot \ldots \cdot a_r

이제 블라디미르 게르마노비치는 임의의 길이를 가진 유연한 구간을 만들 수 있는지 알고 싶어 한다. 양의 정수 nn이 주어질 때, nn개의 연속한 양의 정수로 이루어진 유연한 구간을 하나 찾거나, 그러한 구간이 없음을 밝혀라.

입력

첫째 줄에 정수 nn이 주어진다. (1≤n≤10 0001 \le n \le 10\,000) nn은 필요한 구간의 길이이다.

출력

nn개의 양의 정수로 이루어진 유연한 구간이 존재하면 첫째 줄에 "YES"를, 그렇지 않으면 "NO"를 출력한다.

그러한 구간이 존재하면 둘째 줄과 셋째 줄에 이 구간의 정보를 출력한다.

둘째 줄에는 구간의 첫 번째 원소 ll을 출력한다. (1≤l≤1 000 0001 \le l \le 1\,000\,000) 길이 nn인 유연한 구간이 존재하면 1≤l≤1 000 0001 \le l \le 1\,000\,000인 길이 nn의 유연한 구간 [l;r][l; r]이 항상 존재함이 보장된다.

셋째 줄에는 공백 없이 길이 nn인 문자열을 출력한다. 이 문자열은 "+"와 "-"로만 이루어져야 하며, (k−l+1)(k-l+1)번째 문자가 "-"이면 ak=k−1a_k = k - 1이고, "+"이면 ak=k+1a_k = k + 1이다.

힌트

두 번째 예시에서 n=4n = 4, l=2l = 2, r=l+n−1=5r = l + n - 1 = 5이다. 답은 다음과 같다. a2=2−1=1a_2 = 2 - 1 = 1, a3=3+1=4a_3 = 3 + 1 = 4, a4=4+1=5a_4 = 4 + 1 = 5, a5=5+1=6a_5 = 5 + 1 = 6. ll부터 rr까지의 정수들의 곱은 2⋅3⋅4⋅5=1202 \cdot 3 \cdot 4 \cdot 5 = 120이다. aka_k들의 곱은 a2⋅a3⋅a4⋅a5=1⋅4⋅5⋅6=120a_2 \cdot a_3 \cdot a_4 \cdot a_5 = 1 \cdot 4 \cdot 5 \cdot 6 = 120이다. 따라서 구간 [2;5][2; 5]는 유연하다.

예제2

  1. 예제 1

    입력
    1
    
    예상 출력
    NO
    
  2. 예제 2

    입력
    4
    
    예상 출력
    YES
    2
    -+++