Description

给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.

Input

第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.

Output

输出最短的长度

Sample Input

8
cabcabca

Sample Output

3

HINT

对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串

/*
答案为n-fail[n]
我们可以分n-fail[n]>=n/2和n-fail[n]<n/2来讨论,画画图就可以得出结论。
*/
#include<cstdio>
#include<iostream>
#define N 1000010
using namespace std;
int fail[N],n;
char s[N];
int main(){
scanf("%d%s",&n,s+);
fail[]=;
for(int i=;i<=n;i++){
int p=fail[i-];
while(p&&s[p+]!=s[i]) p=fail[p];
if(s[p+]==s[i]) fail[i]=p+;
else fail[i]=;
}
printf("%d",n-fail[n]);
return ;
}

最新文章

  1. mybatis一个怪异的问题: Invalid bound statement not found
  2. java提高篇(十五)-----关键字final
  3. 建立php开发环境(XAMPP + Xdebug+Zend Studio)
  4. codeforces Round #252 (Div. 2) C - Valera and Tubes
  5. 【py分析】
  6. while DEMO
  7. 畅通工程2 HDOJ--1863
  8. 转:gpio_direction_output 与 gpio_set_value
  9. MyEclipse汉化后问题
  10. C#操作Excel总结
  11. 用ASP编写购物车代码
  12. javascript表单操作
  13. python学习===判断两个日期的间距天数
  14. java把html标签字符转普通字符(反转换成html标签)(摘抄)
  15. Maven4-仓库
  16. spring MVC,controller中获得resuqest和response的方式
  17. oracle 创建表空间 与创建用户与分配用户权限
  18. 资源打包Assetbundle .
  19. .NET Core MemoryCache缓存获取全部缓存键
  20. 80端口被System占用 造成Apache不能启动的解方案

热门文章

  1. codevs 3026 恶心的扑克
  2. python简单爬虫爬取百度百科python词条网页
  3. MIPS——分支语句
  4. mac上使用命令行显示隐藏文件
  5. Spring启动流程—源码解读
  6. k8s master init and add node
  7. Python基础篇 -- 运算符和编码
  8. ios 点餐系统
  9. 蓝牙学习(5) -- sockets
  10. idea 插件推荐 &amp; 代码样式安装