nxt数组为KMP的next数组
num[i]储存了i前面可以匹配的串的个数。
先在KMP求nxt中顺便求出num
最后再找到对于i的最大的前后缀不重叠的可匹配的j,ans*=(num[j]+1)%1000000007
ans即为答案
 #include<cstdio>
#include<cstring>
using namespace std;
char s[];
int nxt[],num[],n;
long long ans;
void doit(char *s){
int n=strlen(s);
nxt[]=-;
nxt[]=;
num[]=;
num[]=;ans=;
for(int i=,j=;i<n;i++){
while(j>=&&s[i]!=s[j])j=nxt[j];
nxt[i+]=++j;
num[i+]=num[j]+;
}
for(int i=,j=;i<n;i++){
while(j>=&&s[i]!=s[j])j=nxt[j];
j++;
while((j<<)>(i+))j=nxt[j];
ans=(ans*((long long)num[j]+))%;
}
printf("%lld\n",ans);
}
int main(){
scanf("%d",&n);
while(n--){
scanf("%s",s);
doit(s);
}
}

最新文章

  1. Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
  2. 什么是侧翼区(flanking region)和侧翼区单核苷酸多态性(Flanking SNPs)
  3. Linux_DHCP服务搭建
  4. Velocity(1)——注释
  5. 160906、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  6. Add Two Numbers ---- LeetCode 002
  7. CLOUDSTACK接管VCENTER,意外频出,但最终搞定
  8. C语言--对数组地址的解析
  9. QT 初试 MainWindow简易窗体
  10. 快速玩转Apple Pay开发
  11. [补充资料] 手动搭建 Cloudera 集群
  12. Java面试题之对static的理解
  13. certificate &amp; encryption
  14. 解决IntelliJ IDEA 创建Maven项目速度慢问题
  15. 在windows上传一个新的项目到GitHub上
  16. mybatis-generator插件执行报错:Cannot resolve classpath entry
  17. topcoder srm 475 div1
  18. JavaBasic_09
  19. window.frames &amp;&amp; iframe 跨页面通信
  20. KETTLE并行

热门文章

  1. python基础15 ---面像对象的程序设计
  2. ssl和tls
  3. samsung n143 brightness on linux mint
  4. 声明:关于该博客部分Java等方向知识参考来源的说明
  5. Java多线程系列 JUC线程池07 线程池原理解析(六)
  6. 【六】MongoDB管理之副本集
  7. Python运算和和表达式 学习笔记
  8. JavaScript在执行代码之前会校验代码,声明变量提前至当前作用域最前面。
  9. [Vue] 初识Vue-常用指令
  10. assembly打包插件引发的自定义spring标签找不到声明的错误