HDU4639
1 /*计算里面有多少个相邻的he,1个he就是1种意思,两个就是,两种,所以这是 2 一个斐波拉期数列,间隔的hehe互不影响所以是互斥事件,直接相乘就可以*/ 3 #include<stdio.h> 4 #include<string.h> 5 const int maxn=10086+10; 6 const int mod=10007; 7 int fb[maxn]; 8 void init() 9 { 10 int i; 11 fb[0]=fb[1]=1; 12 for(i=2;i<maxn;i++) 13 { 14 fb[i]=(fb[i-1]+fb[i-2])%mod; 15 } 16 } 17 int main() 18 { 19 int i,m; 20 int t; 21 int ca=0; 22 char s[maxn]; 23 init(); 24 scanf("%d",&t); 25 while(t--) 26 { 27 int ans=1; 28 scanf("%s",s); 29 m=strlen(s); 30 for(i=0;i<m;i++) 31 { 32 int k=0; 33 if(s[i]=='h' && s[i+1]=='e') 34 { 35 k=1; 36 i=i+2; 37 while(s[i]=='h'&&s[i+1]=='e'&&i<m-1) 38 { 39 k++; 40 i=i+2; 41 } 42 //printf("%d ",k); 43 } 44 ans=(ans*fb[k])%mod; 45 //printf("%d\n",fb[k]); 46 } 47 printf("Case %d: %d\n",++ca,ans); 48 } 49 return 0; 50 }