时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
有 n 种不同的卡包和 m 种不同的卡片。
对于第 i 种卡包,每包恰好会开出 k 张卡。开出每一张卡时,得到第 j 种卡片的概率为 pi,j。保证对于任意一种卡包,其对应的所有卡片开出概率之和均为 1。
现在你一共购买了:
-
第 1 种卡包 a1 包;
-
第 2 种卡包 a2 包;
-
...
-
第 n 种卡包 an 包。
请你求出最终得到的每一种卡片的期望张数。
输入描述:
第一行包含三个整数 n,m,k,分别表示卡包种类数、卡片种类数以及每包卡片数。
接下来 n 行,每行包含 m 个实数,其中第 i 行第 j 个实数 pi,j 表示从第 i 种卡包中开出一张第 j 种卡片的概率。
最后一行包含 n 个整数 a1,a2,...,an,表示每种卡包购买的数量。
- 对于 100% 的数据,1≤n,m≤1000
- 1≤k≤1000
- 0≤ai≤1000
- 0≤pi,j≤1
- pi,j 保留 2 位小数
- 保证对于任意 1≤i≤n,都有 ∑j=1mpi,j=1
输出描述:
输出一行,共 m 个实数。
第 j 个实数表示第 j 种卡片最终获得张数的期望值。
所有答案均需保留两位小数输出。
示例1
输入
复制
2 3 10
0.50 0.30 0.20
0.20 0.50 0.30
3 2
示例2
输入
复制
3 2 5
0.33 0.67
0.50 0.50
0.25 0.75
2 3 4