shunfurh 于 2017.08.31 17:23 提问

Dangerous Pattern

The FBI has just now got the information that the terrorists are machinating a new terroristic attack. The terrorists keep contact in some magazines, newspapers, in some crypto ways. We will say a section of text contains dangerous pattern if S[1], S[2], ..., SK appears in the specified order and does not overlap.

For example if we have
K = 2
S[1] = 'aa'
S[2] = 'ab'
the text 'aaab' contains a dangerous pattern but the text 'aab' does not. Because the appearance of 'aa' (position [1, 2]) and the appearance of 'ab' (position [2, 3]) overlaps. Neither does 'abaa' because the appearance of them ([3, 4] and [1, 2]) are not in the specified order.

Now it turns to you the task to count how many different dangerous patterns a given text contains. We will say that two dangerous patterns are different when and only when there is at least S[i] such that the appearance of S[i] in this two patterns differs.

For example, if
K = 2
S[1] = 'a'
S[2] = 'b'
text = 'aabb'
There are four different dangerous patterns in this text ([1, 3], [1, 4], [2, 3], [2, 4] represented by the position of the appearance.

The result may be too large, you need only to output the remainder that the result divides 28851.

Some constraints for this problem:

1. The total length of the S[i] does not exceed 10,000.

2. For all the string S[1], S[2], ..., S[K], there are no two string S[i] and S[j] such that S[i] is the suffix of S[j].

3. The total length of the text does not exceed 500,000.

4. The character that appears in S[i] or in the text are all latin letters in lowercases. (i.e. 'a' .. 'z')

Input

The first line of the input is a single number X (0 < X <= 10), the number of the test cases of the input. Then X blocks each represents a single test case.

For each block the first line is an integer K. Then K lines, the (i+1)-th lines represents S[i]. Then one line whose length does not exceed 500,000 represents the text.

There're NO breakline between two continuous test cases.

Output

For each block output one line that is the remainder that the number of different dangerous patterns divides 28851.

Sample Input

2
2
a
b
aabb
2
a
b
aabb

Sample Output

4
4

1个回答

caozhy      2017.09.15 23:46

Level: IntermediatePeter Haggar (haggar@us.ibm.com), Senior Software Engineer, IBM　01 May 2002All programming languages have their share of idioms. Many are useful to know and use, and programme
Error: Running Homebrew as root is extremely dangerous and no longer supported.
homebrew 无法安装，提示不能在根目录下使用BUG: Error: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts
discuz ASP.NET 4.0验证请求 A potentially dangerous Request.Form value was detected from the client

Android 6.0 Dangerous Permissions与授权机制
android 6.0 Marshmallow版本之后，系统不会在软件安装的时候就赋予该app所有其申请的权限，对于一些危险级别的权限，app需要在运行时一个一个询问用户授予权限。 From android M permissions will be granted at runtime. User consent is not required for Normal permissions b
A potentially dangerous Request.Path value was detected from the client异常解决方案

Android6.0极其以上系统获取Dangerous系统权限问题及其解决方案

ASP.net 4.0嵌入Ckeditor 3.5 报错A potentially dangerous Request.Form value was detected from the client 的解决办法
<br />新发布的版本Ckeditor3.5 嵌入到 ASP.net 4.0 页面时报错如下：<br /><br />--------------------------------------------------------------------------------<br /><br />Server Error in '/' Application. <br />-----------------------------------------------------------------
Archlinux（PC机）安装实时内核 linux-rf-bfq和linux-rt

N:\PSA PEUGEOT\2012\02\20120214-Liduoduo\source\Répartition 120214.xls是这个路径的问题 é是这个路径 一.vs.net在新建工程时弹出"Automation 服务器不能创建对象"的解决方案 原因是FileSystemObject创建失败的问题， 解决的方法：运行Regsvr32 scrrun.dll 二.
warning: the ‘gets' function is dangerous and should not be used