标签:div col get code bsp cst ble show ||
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746
题意:要求字符串形成两遍的循环。
3
aaa -> 已经形成循环,所以不需要添加珠子
abca -> abc为一个循环,需要添加两个珠子
abcde -> 以abcde为一个循环,需要再添加一个abcde
思路:直接利用kmp构造出的next函数。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int n; 5 char a[100600]; 6 int next[100600]; 7 8 void get_next() 9 { 10 next[0]=-1; 11 int tmp=-1,i=0; 12 while(i!=n){ 13 if(tmp==-1 || a[i]== a[tmp]) 14 next[++i]=++tmp; 15 else 16 tmp=next[tmp]; 17 } 18 } 19 20 int main() 21 { 22 int T; 23 scanf("%d",&T); 24 while(T--){ 25 scanf("%s",a); 26 n=strlen(a); 27 get_next(); 28 int length=n-next[n]; 29 // printf("%d %d %d\n",n,length,next[n]); 30 if(n!=length&&n%length==0) 31 printf("0\n"); 32 else{ 33 int ans=length-next[n]%length; 34 printf("%d\n",ans); 35 } 36 } 37 return 0; 38 }
标签:div col get code bsp cst ble show ||
原文地址:https://www.cnblogs.com/ZQUACM-875180305/p/9281864.html