UOJ Logo Universal Online Judge

UOJ

#918. 【UR #28】偷吃蛋糕

附件下载 统计

看起来 UOJ 正在举办十周年庆典!只要通过完成挑战,收集到宝贵的比特,就可以兑换奖品!

其中一项挑战是吃十周年大蛋糕!蛋糕有 n 层,第 i 层大小是 ci,为了防止蛋糕倒塌,保证 c 单调不增。

作为挑战者,主办方初始会将第 1 层蛋糕给你,在挑战的过程中,将会把剩下的蛋糕按照标号从小到大的顺序根据规则依次给你。你会重复如下操作,直到手上没有蛋糕:

  • 吃掉你已有的最大的一层蛋糕,假设吃掉的这层蛋糕的大小为 x
  • 如果主办方有至少 x 层蛋糕,主办方会按照顺序,将接下来的 x 层蛋糕 转交 给你。
  • 否则如果主办方的蛋糕不足 x 层,只有 y 层,那么主办方会将剩余的蛋糕全部 转交 给你,并补偿你 xy 个比特。

似乎如果这样,那么所有的挑战者都可以吃到所有的蛋糕,并获得一样的比特!真是其乐融融!但是谁都没有注意到,一只爱吃蛋糕的小老鼠,也偷偷溜进了庆典!

偷吃蛋糕

由于这只小老鼠过于喜欢吃蛋糕,每当主办方想要将至少一层蛋糕 转交 给你的时候,这只小老鼠都会突然出现并随机抢走其中的一块即将 转交 给你的蛋糕!

为了挑战最终谜题,现在你作为挑战者想知道,你在这次游戏中期望能获得多少个比特呢?答案对 998244353 取模。

输入格式

第一行输入一个正整数 n

第二行输入 n 个单调不增的正整数 c1,c2,,cn

输出格式

一行一个整数,表示答案对 998244353 取模后的余数。

样例一

input

3
1 1 1

output

0

explanation

在你吃完第一层蛋糕后,当主办方将第二层蛋糕转交给你的过程中,小老鼠偷走了第二层蛋糕,因此你无法吃完所有蛋糕,也无法获得比特。

样例二

input

5
3 3 2 1 1

output

3

explanation

在你吃完第一层蛋糕后,主办方将第 24 层蛋糕转交给你的过程中,小老鼠会随机偷走这三层中的一层。下一次转交蛋糕必然是只转交最后一层,因此最后一层蛋糕也必然会被小老鼠偷走,偷取第 2,3,4 层蛋糕则分别可以获得 2,3,4 个比特,因此期望可以获得 3 个比特。

样例三

input

18
5 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1

output

199648871

样例四~八

见附件下载。

限制与约定

对于所有数据,保证 1n20001cin,且 c 单调不增。

子任务编号 n c1 分值
1 18 18 10
2 50 50 15
3 200 20 10
4 500 500 15
5 1000 22 20
6 2000 2000 30

时间限制:0.6s

空间限制:512MB