수열의 합

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

요약
H(N,S,L)과 H(1,X,X)가 998244353에 대해 합동이 되는 가장 작은 음이 아닌 정수 X를 구하거나, 없으면 -1을 출력한다.
난이도

어려움10점 중 9점

유형
정수론, 조합론, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

2024년 2학기는 지금까지 MatKor Cup을 주도하던 동우, 재우, 종우를 비롯한 많은 사람들의 마지막 학기이다. MatKor는 특별한 사건 없이 한 학기가 지나갔지만, 국가적으로 평화롭지는 않던 연말이 지나고 2025년이 되었다. 재우는 올해 1월 1일에도 떠오르는 태양을 보며 올해는 면허를 따야지 다짐한다.

재우는 2025년이 밝고 2025=(1+2+3+⋯+9)22025=(1+2+3+\cdots +9)^2이라는 것에 매우 놀랐다. 심지어 재우는 2025=13+23+33+⋯+932025=1^3+2^3+3^3+\cdots +9^3도 성립하는 것을 보고 매우 놀라 동우에게 말했다. 동우는 이를 보더니 두 식은 동치가 아니냐며 일침을 날렸다.

옆에서 이 모습을 지켜보던 마음씨 착한 도훈이는 재우를 위로해 주며, 재우에게 동우 몰래 X3X^3과 3X3^X을 이용한 해시 인증 체계를 만들자고 제안했다.

먼저 어떤 수열 AA에 함수 T(A)T\left( A \right)를 원소들의 세제곱의 합을 33의 거듭제곱 취한 꼴로 정의한다. 즉, 아래와 같이 정의된다.

\[T\left( A \right) =3^{\sum_{i=1}^NA_i^3}\]

인증을 위해 먼저 개인키로 세 정수 NN, SS, LL을 준비한다. 이제 수열의 길이가 NN이며, 모든 원소는 00 이상 LL 이하의 정수이고, 모든 원소의 합이 SS인 수열의 집합을 A(N,S,L)\mathbb{A}\left( N,S,L \right)라 하자. 즉, 아래와 같이 정의된다.

\[\mathbb{A}\left( N,S,L \right) =\left\{ A\in{\mathbb{Z}_{L+1}}^N\middle |\sum_{i=1}^NA_i=S \right\}\]

이제 해시 함수 H(N,S,L)\mathbb{H}\left( N,S,L \right)은 모든 A(N,S,L)\mathbb{A}\left( N,S,L \right)의 원소에 대해 TT값의 합으로 정의한다. 즉, 아래와 같이 정의된다. 만약 A(N,S,L)=∅\mathbb{A}\left( N,S,L \right) =\varnothing이라면 H(N,S,L)=0\mathbb{H}\left( N,S,L \right) =0이다.

\[\mathbb{H}\left( N,S,L \right) =\sum_{A\in\mathbb{A}\left( N,S,L \right)}T\left( A \right)\]

재우와 도훈이는 이제 새로운 인증 요청이 들어오면 H\mathbb{H}를 통해 계산된 해시값을 비교해 인증할 수 있다. 그리고 C++을 좋아하는 두 명은 큰 수 연산이 귀찮아 해시값의 모듈로를 통해 비교하고자 한다. 즉, 올바른 키가 (N,S,L)\left( N,S,L \right)이고, 입력된 키가 (N′,S′,L′)\left( N^\prime,S^\prime,L^\prime \right)일 때, P=998,244,353P=998\\, 244\\, 353에 대해 H(N,S,L)≡H(N′,S′,L′)(modP)\mathbb{H}\left( N,S,L \right)\equiv\mathbb{H}\left( N^\prime,S^\prime,L^\prime \right)\pmod P인지 검사해 성립한다면 올바른 인증이라고 판단할 것이다.

이제 재우는 이 해시가 안전한지 검사하기 위해 해시 충돌의 가능성을 알아보려 한다. 즉, (N,S,L)≠(N′,S′,L′)\left( N,S,L \right)\ne\left( N^\prime,S^\prime,L^\prime \right)이지만, H(N,S,L)≡H(N′,S′,L′)(modP)\mathbb{H}\left( N,S,L \right)\equiv\mathbb{H}\left( N^\prime,S^\prime,L^\prime \right)\pmod P가 성립하는 경우가 있는지 알아보려 한다. 재우는 특히 키 (N,S,L)\left( N,S,L \right)가 주어질 때, H(N,S,L)≡H(1,X,X)(modP)\mathbb{H}\left( N,S,L \right)\equiv\mathbb{H}\left( 1,X,X \right)\pmod P를 만족하는 음이 아닌 정수 XX를 찾고 싶다.

재우를 도와 주어진 (N,S,L)\left( N,S,L \right)에 대해 해시 충돌을 일으킬 수 있는 (1,X,X)\left( 1,X,X \right)가 있다면 찾아보자.

입력

첫 번째 줄에 수열의 길이 N(2≤N≤1018)N(2\le N\le 10^{18}), 수열의 합 S(0≤S≤2⋅105)S(0\le S\le 2\cdot 10^5), 원소의 최댓값을 의미하는 L(0≤L≤S)L(0\le L\le S)이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 주어진 조건을 만족하는 음이 아닌 정수 XX가 존재하면 XX의 최솟값을, 존재하지 않는다면 -1을 출력한다.

예제8

  1. 예제 1

    입력
    2 0 0
    
    예상 출력
    0
    
  2. 예제 2

    입력
    2 2 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    2187 1 1
    
    예상 출력
    2
    
  4. 예제 4

    입력
    637 593 116
    
    예상 출력
    -1
    
  5. 예제 5

    입력
    88982000532514176 1 1
    
    예상 출력
    789
    
  6. 예제 6

    입력
    995 300 210
    
    예상 출력
    733929
    
  7. 예제 7

    입력
    511 193498 174148
    
    예상 출력
    98517945
    
  8. 예제 8

    입력
    1000000000000000000 200000 200000
    
    예상 출력
    142146001