Vasya became interested in bioinformatics. He's going to write an article about similar cyclic DNA sequences, so he invented a new method for determining the similarity of cyclic sequences.
Let's assume that strings s and t have the same length n, then the function h(s,?t) is defined as the number of positions in which the respective symbols of s and t are the same. Function h(s,?t) can be used to define the function of Vasya distance ρ(s,?t):
is obtained from string
s, by applying left circular shift
i times. For example,
Vasya found a string s of length n on the Internet. Now he wants to count how many strings t there are such that the Vasya distance from the string s attains maximum possible value. Formally speaking, t must satisfy the equation:
.<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ClZhc3lhIGNvdWxkIG5vdCB0cnkgYWxsIHBvc3NpYmxlIHN0cmluZ3MgdG8gZmluZCBhbiBhbnN3ZXIsIHNvIGhlIG5lZWRzIHlvdXIgaGVscC4gQXMgdGhlIGFuc3dlciBtYXkgYmUgdmVyeSBsYXJnZSwgY291bnQgdGhlIG51bWJlciBvZiBzdWNoIHN0cmluZ3MgbW9kdWxvIDEwOT8mIzQzOz83LjwvcD4KCgoKSW5wdXQKPHA+ClRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIDxlbT5uPC9lbT4gKDE/odw/PGVtPm48L2VtPj+h3D8xMDUpLjwvcD4KPHA+ClRoZSBzZWNvbmQgbGluZSBvZiB0aGUgaW5wdXQgY29udGFpbnMgYSBzaW5nbGUgc3RyaW5nIG9mIGxlbmd0aCA8ZW0+bjwvZW0+LCBjb25zaXN0aW5nIG9mIGNoYXJhY3RlcnMg"ACGT".
Print a single number ― the answer modulo 109?+?7.
Sample test(s) input1 Coutput
1input
2 AGoutput
4input
3 TTToutput
1Note
Please note that if for two distinct strings t1 and t2 values ρ(s,?t1) и ρ(s,?t2) are maximum among all possible t, then both strings must be taken into account in the answer even if one of them can be obtained by a circular shift of another one.
In the first sample, there is ρ("C",?"C")?=?1, for the remaining strings t of length 1 the value of ρ(s,?t) is 0.
In the second sample, ρ("AG",?"AG")?=?ρ("AG",?"GA")?=?ρ("AG",?"AA")?=?ρ("AG",?"GG")?=?4.
In the third sample, ρ("TTT",?"TTT")?=?27
题意:给一个由A,T,C,G组成的字符串s,求使ρ(s,t)最大的t的个数。易知,t应该由字符串s中个数最多的字母组成(总数最多的字母只有一个的时候很好理解,如果有多个字母的个数相同,那么就可以将这些个数相同的字母看成一个字母,这样是等价的),求出字母个数最多的种类数x,根据排列组合,答案就是x^n
代码:
#include#include #include #include #include #include #include