SP12408 LCPC12G - Johnny Studies Genetics

题目描述

约翰尼决定进行一次实验,模拟一条染色体 $C$ 的遗传变化过程。染色体可以表示为一个整数数组,其中每个元素 $C[i]$ 代表染色体的一个基因。每个基因的值在 $0$ 到 $1,000,000,006$ 之间。由于约翰尼不喜欢编程,他请求你帮忙以模拟经过大量世代后染色体的基因值变化。在第 $T$ 代中,每个基因的值等于前一代 $T-1$ 中若干基因的和,并对 $1,000,000,007$ 取模。例如,如果染色体长度为 3,初始基因值是 4、7 和 12,而新一代的第一个基因是前一代的第一个和第二个基因的和,第二个基因是前一代的第二个和第三个基因的和,第三个基因是前一代的第三个和第一个基因的和。那么第一代后染色体会变成 11、19 和 16;第二代后变为 30、35 和 27;依此类推,直到第 $G$ 代。

输入格式

第一行输入是整数 $T$,表示测试用例的数量。每个测试用例的第一行包含两个整数 $G$ 和 $N$,分别表示代数和染色体的长度,其中 $0 \le G < 10^{18}$ 且 $1 \le N \le 100$。接下来一行有 $N$ 个整数 $n[i]$,表示每个基因的初始值,满足 $0 \le n[i] < 1,000,000,007$。接下来的 $N$ 行,每行以整数 $M[i]$ 开头,表示从前一代中要相加的基因数量,随后是 $M[i]$ 个整数,表示要相加的基因的索引。

输出格式

对于每组测试用例,输出格式如下: `k. n[0] n[1] … n[N-1]` 其中 $k$ 是测试用例编号(从 1 开始),紧随其后的分别是一个句点、一个空格,然后是第 $i$ 个基因在第 $G$ 代后的值。

说明/提示

- $0 \le G < 10^{18}$ - $1 \le N \le 100$ - $0 \le n[i] < 1,000,000,007$ - $0 \le M[i] \le N$ - $0 \le x[j] < N$ **本翻译由 AI 自动生成**