CFCF2204F.Sum of Fractions

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

我们称对分数 xy\frac{x}{y} 的一次增加操作为以下两种操作之一:

  • 将分子的 xx 增加 11
  • 或者,如果分母 y>1y > 1,将分母 yy 减少 11

注意,进行增加操作后,分数不需要约分。例如,如果你有分数 37\frac{3}{7} 并将分母减少 11,结果应为 36\frac{3}{6},而不是 12\frac{1}{2}

现在,给定一个整数数组 b1,b2,,bmb_1, b_2, \dots, b_m 和一个整数 kk。我们执行如下算法:

  1. 构造数组 1b1,1b2,,1bm\frac{1}{b_1}, \frac{1}{b_2}, \dots, \frac{1}{b_m}
  2. 任意选择一个分数并对其执行一次“增加”操作。
  3. 重复上一步,重复 kk 次(同一个分数允许被多次选择)。
  4. 计算最终所有分数的和。

我们定义 MSF(b,k)\mathrm{MSF}(b, k) 为:对数组 bb 执行恰好 kk 次“增加”操作后,所有分数和的最大值。

a[lr]a[l\dots r] 表示数组 aa 的子区间 al,al+1,,ara_l, a_{l+1}, \dots, a_r

现给定两个整数数组 a1,a2,,ana_1,a_2,\dots, a_nk1,k2,,kmk_1, k_2, \dots, k_m。对于每个 kik_i,计算

(l=1nr=lnMSF(a[lr],ki))mod998244353.\left( \sum\limits_{l = 1}^{n}{\sum\limits_{r = l}^{n}\mathrm{MSF}(a[l \dots r], k_i)} \right) \bmod 998\,244\,353.

换句话说,对于每个 kik_i,计算数组 aa 的所有子区间的 MSF\mathrm{MSF} 的和,并输出结果模 998244353998\,244\,353

输入格式

第一行包含两个整数 nnmm1n,m51051 \le n, m \le 5 \cdot 10^5),分别表示数组 aakk 的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1081 \le a_i \le 10^8),表示数组 aa

第三行包含 mm 个整数 k1,k2,,kmk_1, k_2, \dots, k_m0k1k2km1080 \le k_1 \le k_2 \le \dots \le k_m \le 10^8),表示按非递减顺序排列的数组 kk

输出格式

对于每个 kik_i,输出一个整数,表示所有子区间的 MSF\mathrm{MSF} 之和模 998244353998\,244\,353 的结果。

可以证明,每个答案都可表示为既约分数 PQ\frac{P}{Q},其中 Q≢0(mod998244353)Q \not\equiv 0 \pmod{998\,244\,353}。因此,输出形式为 PQ1(mod998244353)P \cdot Q^{-1} \pmod{998\,244\,353}

输入输出样例

  • 输入#1

    5 4
    2 3 5 2 3
    0 1 2 10

    输出#1

    232923695
    332748137
    931694761
    133099397

说明/提示

对于给定的 kk,对应答案依次为:37930\frac{379}{30}583\frac{58}{3}47315\frac{473}{15}224915\frac{2249}{15}

首页