1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstdlib> 5 #include <cstring> 6 #include <string> 7 #include <deque> 8 #include <vector> 9 #include <set> 10 #include <map> 11 #include <cmath> 12 using namespace std; 13 #define ll long long 14 #define N 100009 15 #define gep(i,a,b) for(int i=a;i<=b;i++) 16 #define gep1(i,a,b) for(int i=a;i>=b;i--) 17 #define gepp(i,a,b) for(ll i=a;i<=b;i++) 18 #define gepp1(i,a,b) for(ll i=a;i>=b;i--) 19 #define mem(a,b) memset(a,b,sizeof(a)) 20 #define ph push_back 21 #define lowbit(x) x&(-x) 22 #define P pair<int,bool> 23 int c[100]; 24 char p[100]; 25 void get(){ 26 mem(c,0); 27 int i=0,j=-1; 28 c[0]=-1; 29 while(p[i]){ 30 if(j==-1||p[i]==p[j]){ 31 c[++i]=++j; 32 } 33 else 34 {j=c[j]; 35 } 36 } 37 /* 38 for(int i=0;i<=strlen(p);i++){//有== 39 printf("%d ",c[i]); 40 } 41 42 azcaz 43 -1 0 0 0 1 2 44 45 printf(" "); 46 */ 47 48 } 49 int kmp(){ 50 int i,j; 51 i=j=0; 52 get(); 53 while(i<n&&j<m){ 54 if(j==-1||s[i]==p[j]){ 55 i++,j++; 56 } 57 else 58 { 59 j=c[j]; 60 } 61 if(j==m) 62 { 63 return i-m+1; 64 } 65 } 66 return -1; 67 /* 68 1 2 1 2 3 1 2 3 1 3 2 1 2//初始下标为0 69 1 2 3 1 3 70 6 71 1 2 1 2 3 1 2 3 1 3 2 1 2 72 1 2 3 2 1 73 -1 74 */ 75 } 76 int kmp(){ 77 int lens=strlen(s); 78 int lenp=strlen(p); 79 int i=0,j=0; 80 int ans=0; 81 get(); 82 while(i<lens&&j<lenp){ 83 if(j==-1||s[i]==p[j]){ 84 i++; 85 j++; 86 87 } 88 else 89 { 90 j=c[j]; 91 } 92 if(j==lenp){ 93 ans++; 94 j=c[j]; 95 } 96 97 } 98 return ans; 99 /* 100 AZA 101 AZAZAZA 102 3 103 */ 104 } 105 int kmp(){ 106 int lens=strlen(s); 107 int lenp=strlen(p); 108 int i=0,j=0; 109 int ans=0; 110 get(); 111 while(i<lens&&j<lenp){ 112 if(j==-1||s[i]==p[j]){ 113 i++; 114 j++; 115 116 } 117 else 118 { 119 j=c[j]; 120 } 121 if(j==lenp){ 122 ans++; 123 j=0; 124 } 125 126 } 127 return ans; 128 /* 129 aaaaaa 130 aa 131 3 132 */ 133 134 } 135 136 while(t--) 137 { 138 scanf("%s",p); 139 get(); 140 int len2=strlen(p); 141 int x=len2-a[len2];//最小循环节长度 142 if(x==len2) 143 { 144 printf("%d ",len2);//abcde:5 再加abcde 才可以构成循环 145 } 146 else if (len2%x==0)//aaa :1 已经可以构成循环了 147 { 148 printf("0 "); 149 } 150 else 151 { 152 printf("%d ",x-len2%x);// abca : 3 再加bc才可以构成循环 153 } 154 }