Logo 邂逅编程之美

UOJ

时间限制:1 s 空间限制:512 MB
统计

题目描述

卡池里有 $n$ 张卡,卡有 $m$ 种,第 $i$ 种卡有 $a_i$ 张,对于第 $i$ 种卡,你需要 $b_i$ 张。

现在你没有手上没有卡,你要去抽卡。你的策略是这样的:

每一轮在卡池里等概率取抽一张卡(不妨记抽出来的卡种类是 $c$),如果这种 $c$ 卡的数量已经够了,也就是之前已经抽出了 $b_c$ 张种类 $c$ 的卡,那就把这次抽到的卡扔回卡池中,否则保留这张卡。

问期望抽多少轮卡才能达到你的目标,答案对 $998244353$ 取模。

输入格式

第一行一个两个整数 $n,m$。

第二行 $m$ 个整数 $a_i$。

第三行 $m$ 个整数 $b_i$。

输出格式

一个整数,表示答案。

样例

样例输入1

30 2
21 9 
16 5

样例输出1

392863631

样例输入2

100 5
10 0 59 11 20 
4 0 3 0 9

样例输出2

289262577

样例输入3

1000 12
18 5 28 258 2 184 28 145 71 55 10 196 
15 1 27 154 1 104 25 113 6 24 2 80

样例输出3

135831346

数据范围

对于所有数据,有: $n\leq 1000;m\leq 12$。

保证:$\sum_{i=1}^m a_i=n; 0\leq b_i\leq a_i$。

数据关于 $m$ 有梯度。$20$ 组数据中:

$m=2,12$ 的各有 $3$ 个。

$m=3,4,10,11$ 的各有 $2$ 个。

$m=1,5,6,7,8,9$ 的各有 $1$ 个。