1039. [Squarefk] 字串变换
★
输入文件:
changea.in
输出文件:
changea.out
简单对比
时间限制:1 s
内存限制:128 MiB
字串变换
【问题描述】
这一天,FK、ZYN和LHC又聚到了一起,在街上闲逛。突然,FK发现周围存
在不少字符串,比如:KFC、KTV、WC、MALL。。。
于是,FK便又想了一个无厘头的问题,去刁难另外两个人。由于前些日子,
ZYN和LHC刚学习了集合,这个问题当然要和集合有关拉。
定义一个(大写字母)字符串集合{S},初始时只包含一个给定的字符串S1。
每次从中任意取出一个字符串,将它们变换后再放入集合中。要求变换后的字
符串,在集合中没有出现过。
变换的规则如下:在变换前、后,字符串都必须由大写字母组成,每次只准
改动一个位置,使它的ASCLL加1。例如:'A'->'B'、'B'->'C'、'C'->'D'、。。。、
'Y'->'Z'。而如果该位置为'Z',则无法改动。
那么,若干次操作后,该集合的元素个数一定会达到最大。
而对于现在的{S}集合中的每个字符串Si(S1除外),都是由另外一个字符
串Sj=F(Si)转换得到的,把所有的F(Si)罗列下来,把它称作一种方案。
例如:S1->S2、S1->S4、S4->S3
方案:(NO)、S1、S4、S1
而求的就是该集合的最大元素个数,以及构成有多少种不同的方案。ZYN和
LHC这个时候已经被绕晕,只好再次把这个任务交给你了。
【输入格式】
从文件change.in中读入数据。
第1行有1个由大写字母组成字符串
【输出格式】
输出到文件change.out中。
输出2行,每行包含1个数,第1行表示最大元素个数,第2行表示方案数,
答案都取模10007。
【样例输入】
XYZ
【样例输出】
6
4
【样例解释】
最终集合为:
{'XYZ','XZZ','YYZ','YZZ','ZYZ','ZZZ'}
令XY S1='XYZ',S2='XZZ',S3='YYZ',S4='YZZ',S5='ZYZ',S6='ZZZ'
构成的方案有:
1.(NO),S1,S1,S2,S3,S4
2.(NO),S1,S1,S3,S3,S4
3.(NO),S1,S1,S2,S3,S5
4.(NO),S1,S1,S3,S3,S5
【数据范围】
对于30%数据,字符串长度≤5
对于60%数据,字符串长度≤25
对于100%数据,字符串长度≤400