T319422 穷哥们也想发财

题目背景

有人说,如果可以把这个世界上的人按其经济状况分为3类:下层,中层,上层,我们用1,2,3表示这三个阶层,观察发现,决定一个人的收入阶层最重要的因素就是其父母的收入阶层。从父代到子代,收入阶层转移概率如下图。 ![](https://cdn.luogu.com.cn/upload/image_hosting/o6nqvgg4.png) $$ 图1 $$ ------------ 假设我们知道人的阶级分布,以年为单位观察这个世界(你可以理解成每过一年阶层会恰好按照这个概率转移一次),两年后会有如下的结果。 ![](https://cdn.luogu.com.cn/upload/image_hosting/ztf6jkci.png) $$ 图2 $$

题目描述

我作为一个穷哥们,昨天晚上神托梦给我,让我知道了这个世界上人们的阶级共分为 $n$ 层,分布情况为 $A$($A$ 为一列向量),转移概率矩阵 $P$(即图1,$P_{i,j}$ 表示原来在第 $i$ 阶层的人一年后转移到第 $j$ 阶层的概率)。 然而今天早上概率论补考又没及格,实在不想努力了,但我出生就是穷哥们,再不努力就要饿死了。现在我很想知道五年之内被金发红瞳兽耳萝莉富婆((masterpiece))包养,一跃成为富哥们的概率。 但是舍友是C语言大佬(也是富哥们),他听了之后立马写了个小程序告诉我,结果是*NAN*,他笑了,我哭晕了。 醒了之后,我觉得人不应该局限于个人的阶级,而应该思考一些对社会更有帮助的问题,现在我想知道 $K$ 年之后,这个世界上人类的阶层分布情况 $B$。 ------------ 形式化的说: 现在已知列向量 $A$,矩阵 $P$,变量 $K$,请求出 $B=(P^T)^K *A$ 的值(也是一列向量),其中 $P^T$ 为 $P$ 的转置矩阵。

输入格式

第一行两个整数 $n$$(1 \le n\le 700)$,$K$$(1\le K\le 1'000'000'000)$分别表示阶层的数量和经过的年数。 第二行 $n$ 个正整数,$A_1\cdots A_n$$(1\le A_i\le100'000)$,分别表示每个阶层初始人数。 第 $3$ 到 $n+2$ 行,每行 $n$ 个整数,记作 $Q_{i,j}$$(1\le Q_{i,j}\le1'000)$, 另记 $S_i$ 表示第 $i$ 行内 $Q_{i,j}$ 的和,即 $S_i=\sum_{j=1}^nQ_{i,j}$。题目所需 $P_{i,j}=Q_{i,j}/S_i$。 **除$n, K$的输入保证在变量范围内随机取值。**

输出格式

输出一行共 $n$ 个整数,分别为 $B_1\cdots B_n$,表示 $K$ 年后每个阶级的期望人数保留 $7$ 位小数。

说明/提示

本题对精度要求较高,推荐使用和出题者相同的**double类型**进行运算,如赛后发现遇到精度相关的问题,请理解(卡精度也是ACM的一部分!) 如果你要问最终的人数为什么不是整数,请学习期望相关知识,如果还是无法理解,请先完成其他题目。