DNA Sequence
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 9889 | Accepted: 3712 |
Description
It's well known that DNA Sequence is a sequence only contains A, C, T and G, and it's very useful to analyze a segment of DNA Sequence,For example, if a animal's DNA sequence contains segment ATC then it may mean that the animal may have a genetic disease. Until now scientists have found several those segments, the problem is how many kinds of DNA sequences of a species don't contain those segments.
Suppose that DNA sequences of a species is a sequence that consist of A, C, T and G,and the length of sequences is a given integer n.
Suppose that DNA sequences of a species is a sequence that consist of A, C, T and G,and the length of sequences is a given integer n.
Input
First line contains two integer m (0 <= m <= 10), n (1 <= n <=2000000000). Here, m is the number of genetic disease segment, and n is the length of sequences.
Next m lines each line contain a DNA genetic disease segment, and length of these segments is not larger than 10.
Next m lines each line contain a DNA genetic disease segment, and length of these segments is not larger than 10.
Output
An integer, the number of DNA sequences, mod 100000.
Sample Input
4 3 AT AC AG AA
Sample Output
36
Source
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=110; const int mod=100000; struct Trie{ int ok; int fail; int next[4]; void Init(){ ok=0; fail=-1; memset(next,-1,sizeof(next)); } }a[N]; char wrd[30]; char str[N]; int n,m,cnt,q[N]; int find(char ch){ switch(ch){ case 'A':return 0; case 'C':return 1; case 'T':return 2; case 'G':return 3; } return 0; } void InsertTrie(char *str){ int p=0; for(int i=0;str[i]!='