결계 배치하기

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

요약
수직선 위에 M개의 결계를 배치해 N개의 에너지원이 각 결계마다 정확히 N/M개씩 충돌하도록 하는 배치의 수를 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

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

문제

영문을 모르겠어!

 ∧   ∧

↙( ◕ ‿‿ ◕ )↘

11 이상 KK 이하의 정수들을 좌표로 가지는 수직선 위에 NN개의 에너지원이 각각 1≤a_1\<a_2<⋯\<a_N≤K1\leq a\_1\<a\_2<\cdots \<a\_N\leq K 위치에 있다. 큐베는 이 수직선 위에 결계들을 적절히 배치하여, 에너지원들이 결계와 충돌하게끔 해 이때 발산되는 에너지를 모으는 일을 한다. 큐베는 MM (MM은 NN의 약수)개의 서로 다른 오름차순 정수 1≤b_1\<b_2<⋯\<b_M≤K1\leq b\_1\<b\_2<\cdots \<b\_M\leq K을 선택하여 그 위치들에 동시에 결계를 설치하려고 한다. 에너지원이 있는 위치에도 결계를 배치할 수 있다.

결계에는 에너지원들을 유인하는 효과가 있어서, 각 에너지원들은 좌표의 차가 가장 작은 결계로 이동하여 충돌한다. 만약 그러한 결계가 둘이라면 좌표가 더 작은 결계로 이동하여 충돌한다.

큐베는 안정성을 위해 각 결계가 정확히 NM\cfrac{N}{M}개씩의 에너지원과만 충돌하게끔 결계를 배치하려고 한다. 가능한 모든 미래에서 큐베가 서로 다른 순서쌍 (b_1,b_2,⋯ ,b_M)(b\_1,b\_2,\cdots ,b\_M)을 선택하는 경우의 수를 계산해 주자.

입력

첫 번째 줄에 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다. (2≤M≤N≤2,000;M2\leq M\leq N\leq 2 \\, 000 ; M은 NN의 약수;N≤K≤10,000 ; N\leq K\leq 10 \\, 000)

두 번째 줄에 NN개의 정수 a_1,a_2,⋯ ,a_Na\_1,a\_2,\cdots ,a\_N이 공백으로 구분되어 주어진다. (1≤a_1\<a_2<⋯\<a_N≤K)(1\leq a\_1\<a\_2<\cdots \<a\_N\leq K)

출력

큐베가 서로 다른 순서쌍 (b_1,b_2,⋯ ,b_M)(b\_1,b\_2,\cdots ,b\_M)을 선택하는 경우의 수를 998,244,353998\\, 244\\, 353으로 나눈 나머지를 출력한다.

힌트

어떤 두 순서쌍 (x_1,x_2,⋯ ,x_M)(x\_1, x\_2, \cdots, x\_M)과 (y_1,y_2,⋯ ,y_M(y\_1, y\_2, \cdots, y\_M)이 서로 다르다는 것은 x_i≠y_ix\_i \neq y\_i인 ii가 존재함과 동치이다.

예제2

  1. 예제 1

    입력
    2 2 5
    1 4
    
    예상 출력
    8
    
  2. 예제 2

    입력
    4 2 10
    2 3 8 10
    
    예상 출력
    35