#P13445. [GCJ 2009 #3] Alphabetomials
[GCJ 2009 #3] Alphabetomials
题目描述
As we all know, there is a big difference between polynomials of degree and those of degree . The question of the non-existence of a closed formula for the roots of general degree polynomials produced the famous Galois theory, which, as far as the author sees, bears no relation to our problem here.
We consider only the multi-variable polynomials of degree up to , over variables, represented by the set of lowercase English letters. Here is one such polynomial:
Given a string , we evaluate the polynomial on it. The evaluation gives as follows: Each variable is substituted with the number of appearances of that letter in . For example, take the polynomial above, and let . There are six a's, two b's, one c, one e, and three r's. So
$p(S) = 6 \times 2 \times 1 \times 3 + 6 \times 6 \times 2 + 1 = 109.$
Given a dictionary of distinct words that consist of only lower case letters, we call a string a -phrase if
where is any word in the dictionary, for . i.e., is in the form of dictionary words separated with spaces. Given a number , your task is, for each , to compute the sum of over all the -phrases. Since the answers might be big, you are asked to compute the remainder when the answer is divided by .
输入格式
The first line contains the number of cases . test cases follow. The format of each test case is:
A line containing an expression for the multi-variable polynomial, as described below in this section, then a space, then follows an integer .
A line with an integer , the number of words in the dictionary.
Then lines, each with a word, consists of only lower case letters. No word will be repeated in the same test case.
We always write a polynomial in the form of a sum of terms; each term is a product of variables. We write simply as a's concatenated together. For example, is written as . Variables in each term are always lexicographically non-decreasing.
输出格式
For each test case, output a single line in the form
Case #X:
where is the case number starting from 1, and sum is the sum of , where ranges over all -phrases, modulo 10009.
2
ehw+hwww 5
6
where
when
what
whether
who
whose
a+e+i+o+u 3
4
apple
orange
watermelon
banana
Case #1: 15 1032 7522 6864 253
Case #2: 12 96 576
提示
Limits
- .
- The string consists of one or more terms joined by '+'. It will not start nor end with a '+'. There will be at most 5 terms for each . Each term consists at least 1 and at most 4 lower case letters, sorted in non-decreasing order. No two terms in the same polynomial will be the same.
- Each word is non-empty, consists only of lower case English letters, and will not be longer than 50 characters. No word will be repeated in the same dictionary.
Small dataset
- Time limit:
303 seconds.
Large dataset
- Time limit:
606 seconds.