#4006. 货币(Currency)

货币(Currency)

货币(Currency)

题目描述

Alice 中奖得到了 XX 元额度!但是她并不能直接将这些额度提现,她需要通过兑换货币的方式将额度提现。

Alice 可以找到一家提供面值为 yy 元的货币的机构进行提现。具体的,如果 Alice 现在还有 xx 元额度,那么她将尽可能地兑换面值为 yy 元的货币,直到 Alice 只剩下 xmodyx \bmod y 元额度。

现在 Alice 选好了 nn 家机构,第 ii 家机构提供的货币面值为 aia_i。Alice 将前往 nn 家机构进行替换。Alice 发现她可能会浪费一些额度,而拜访机构的方案总共有 n!n! 种。她想知道所有方案中浪费的额度之和为多少?这个值可能非常大,她只需要你求出答案对 998244353998244353 的值。

输入格式

第一行两个正整数 n,Xn, X,表示机构的数量和 Alice 的初始额度。

第二行共 nn 个正整数 aia_i,表示第 ii 家机构提供的货币面值为 aia_i

输出格式

一行一个整数,表示答案对 998244353998244353 取模的值。

样例输入 #1

5 82
22 11 6 5 13

样例输出 #1

288

数据范围

  • 对于 30%30\% 的数据,1n101 \leq n \leq 10
  • 对于另外 30%30\% 的数据,1ai51 \leq a_i \leq 5
  • 对于 100%100\% 的数据,1n200,1ai,X1051 \leq n \leq 200, 1 \leq a_i, X \leq 10^5

知识点与难度

本题涉及的知识点从属于 GESP 7级,难度等级:⭐⭐⭐⭐⭐

⚠️ 本题触发难题降级模式(搬运超时),std.cpp 和 solution.md 未生成,测试数据仅含 1 组样例。


测试点分布

Subtask 分值 测试点编号 说明
0 100 1 样例(降级模式)