写num【1】=0是错的
#include<bits/stdc++.h>
using namespace std;
int mod=1e9+7;
int n;
string s,s1;
long long nex[1000011],num[1000011],ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
memset(nex,0,sizeof(nex));
memset(num,0,sizeof(num));
cin>>s;
s=" "+s;
ans=1;
num[1]=1;
for(int i=2,j=0;i<s.size();i++)
{
while(j>0&&s[i]!=s[j+1])
j=nex[j];
if(s[i]==s[j+1])
j++;
nex[i]=j;
num[i]=num[j]+1;
}
for(int i=2,j=0;i<s.size();i++)
{
while(j>0&&s[i]!=s[j+1])
j=nex[j];
if(s[i]==s[j+1])
j++;
while((j<<1)>i)
j=nex[j];
ans=(ans*(num[j]+1))%mod;
}
printf("%lld\n",ans);
}
}