만드는 중입니다

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

또 다른 정수론 문제

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

요약
소수 n개가 주어졌을 때, 0부터 소수들의 곱까지 범위에서 어떤 소수로도 나누어떨어지는 수를 정렬하고 인접한 차이의 제곱합을 998244353으로 나눈 값을 구합니다.
난이도

어려움10점 중 8점

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

문제

nn개의 소수 p1,p2,…,pnp_1, p_2, \ldots, p_n이 주어진다. 이 수들은 1<p1<p2<…<pn<10181 < p_1 < p_2 < \ldots < p_n < 10^{18}과 p1≤100p_1 \le 100을 만족한다. 정수 xx가 하나 이상의 pip_i로 나누어떨어지면 xx를 좋은 수라고 한다.

[0,p1⋅p2⋅…⋅pn][0, p_1 \cdot p_2 \cdot \ldots \cdot p_n] 범위의 좋은 수를 모두 a1,a2,⋯ ,ama_1, a_2, \cdots, a_m으로 놓고 a1<a2<…<ama_1 < a_2 < \ldots < a_m이 되도록 정렬한다. ∑i=1m−1(ai+1−ai)2\sum_{i=1}^{m-1} (a_{i+1} - a_i)^2을 계산하라. 합이 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫 줄에 정수 nn (1≤n≤1051 \le n \le 10^5)이 주어진다. 다음 줄에는 nn개의 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n (1<p1<p2<…<pn<10181 < p_1 < p_2 < \ldots < p_n < 10^{18})이 주어진다. 2≤p1<1002 \le p_1 < 100이고 각 pip_i (1≤i≤n1 \le i \le n)는 소수임이 보장된다.

출력

998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 예제에서 좋은 수는 다음과 같다.

  • a1=0a_1 = 0
  • a2=2a_2 = 2
  • a3=4a_3 = 4
  • a4=5a_4 = 5
  • a5=6a_5 = 6
  • a6=8a_6 = 8
  • a7=10a_7 = 10

따라서 답은 (2−0)2+(4−2)2+(5−4)2+(6−5)2+(8−6)2+(10−8)2=18(2-0)^2+(4-2)^2+(5-4)^2+(6-5)^2+(8-6)^2+(10-8)^2=18이다.

예제2

  1. 예제 1

    입력
    2
    2 5
    
    예상 출력
    18
    
  2. 예제 2

    입력
    3
    5 7 233
    
    예상 출력
    31275