此题是找规律题,就是看有几个相连的hehe,对于一个连续的hehe串,他的意思有几个,这满足菲波数列。。一个he 一种,两个he 两种,三个he三种。。
这样就可以把一个连续的hehe序列给解决了,但是在字符串可能有多个hehe串,这是就要用到乘法了。。
#include"stdio.h"
#include"string.h"
int p[20000],b[20000];
int fun(int k)
{
int i;
p[0]=p[1]=p[2]=1;
for(i=2;i<=k;i++)
{
p[i]=p[i-1]+p[i-2];
p[i]=p[i]%10007;
}
return p[k];
}
int main()
{
int m,i,k,h,j=1,sum;
char a[11000];
scanf("%d",&m);
while(m--)
{
k=h=0;
sum=1;
scanf("%s",a);
for(i=0;a[i];i++)
{
if(a[i]=='h'&&a[i+1]=='e')
{
k++;
if(a[i+2]!='h'||a[i+3]!='e')
{
b[h]=k;
h++;
k=0;
}
}
}
for(i=0;i<h;i++)
{
sum=sum*fun(b[i]);
sum=sum%10007;
}
printf("Case %d: %d\n",j++,sum);
}
return 0;
}