hdu3746(kmp循环节)
http://acm.hdu.edu.cn/showproblem.php?pid=3746
#include<iostream> #include<string.h> using namespace std; int next[200000]; char s[200000]; void getnext() { int i=0,j=-1; next[0]=-1; int len=strlen(s); while(i<len) { if(j==-1||s[i]==s[j]) { i++; j++; next[i]=j; } else j=next[j]; } } int main() { int text; scanf("%d",&text); while(text--) { scanf("%s",s); int len=strlen(s); getnext(); if(next[len]==0) printf("%d\n",len); else { int t=len-next[len]; if(len%t==0) printf("0\n"); else { printf("%d\n",t-len%t); } } } return 0; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。