만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수열의 합

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

요약
N, S, L이 주어질 때 원소가 0부터 L까지이고 합이 S인 길이 N의 수열들에 대한 해시 값을 mod 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(A)를 원소들의 세제곱의 합을 3의 거듭제곱 꼴로 취한 값으로 정의한다. 즉, 다음과 같다.

T(A)=3∑i=1NAi3T(A)=3^{\sum_{i=1}^N A_i^3}

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

A(N,S,L)={A∈ZL+1N|∑i=1NAi=S}\mathbb{A}(N,S,L)=\left\{ A\in\mathbb{Z}_{L+1}^N \middle| \sum_{i=1}^N A_i=S \right\}

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

H(N,S,L)=∑A∈A(N,S,L)T(A)\mathbb{H}(N,S,L)=\sum_{A\in\mathbb{A}(N,S,L)} T(A)

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

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

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

입력

첫 번째 줄에 수열의 길이 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을 출력한다.

예제5

  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