[2019福建省冬令营Day1T1]原样输出

http://218.5.5.242:9021/contest/140/problem/2

nealchen 是一只 copycat。
它会把输入按行读入,原封不动地复制到输出中去。
但是在一次更新以后,它的程序出了一些问题。
它没法输出换行符了。
并且,读入的时候,总会莫名其妙地随机漏掉开头和结尾的若干个字符,甚至整行都会漏掉。
比如orznight可能会变成rzni,orz,h或者空串。
现在你找到一份输入文件丢给 nealchen,你想知道它的输出可能有多少种情况,以及每种情况分别是什么。
由于你找到的输入文件全部来自之前的福建省选,所以所有的输入文件每行只可能包含A,C,G,T四种字符。

输入格式
从文件 copy.in 中读入数据。
第一行一个正整数 n ,表示(题面中)输入文件的行数。
接下来 n 行,表示输入文件的内容。保证这 n 行中每行的每个字符是 A,C,G,T四种字符中的一种。
接下来一个整数 k(0≤k≤1) ,具体含义详见输出格式。

输出格式
输出到文件 copy.out 中。 若 k=0 ,你需要输出一行,表示输出的可能情况个数模 $10^9+7$ 的结果。 若 k=1 ,你需要按照字典序从小到大输出所有可能的输出情况,一行一个字符串,最后一行输出输出的可能情况个数模 $10^9+7$ 的结果。

样例
【样例 1 输入】
3
AC
CC
AA
0
【样例 1 输出】
22
【样例 2 输入】
3
AC
CC
AA
1
【样例 2 输出】

A
AA
AAA
AC
ACA
ACAA
ACC
ACCA
ACCAA
ACCC
ACCCA
ACCCAA
C
CA
CAA
CC
CCA
CCAA
CCC
CCCA
CCCAA
22
【样例 2 解释】
注意输出的第一行是一个空行,A为第二行。

数据范围与提示
对于 40% 的数据,n=1。
对于 60% 的数据,n<3。
对于 100% 的数据,保证输入文件大小不超过 1MB ,保证输出文件大小不超过 200MB 。


猜你喜欢

转载自www.cnblogs.com/hehe54321/p/10366655.html