标签:
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 37379 | Accepted: 15443 |
Description
Input
Output
Sample Input
abcd aaaa ababab .
Sample Output
1 4 3
Hint
Source
#include <stdio.h> #include <string.h> #include <algorithm> #define maxn 1000000+10 using namespace std; char P[maxn]; int pre[maxn]; void getnext(int plen) { pre[0]=pre[1]=0; for(int i=1;i<plen;i++){ int k=pre[i]; while(k&&P[i]!=P[k])k=pre[k]; pre[i+1]= P[k]==P[i]?k+1:0; } } int main() { while(scanf("%s",P)!=EOF){ if(P[0]=='.')break; int plen=strlen(P); getnext(plen); if(plen%(plen-pre[plen])==0) printf("%d\n",plen/(plen-pre[plen])); else printf("1\n"); } return 0; }
版权声明:本文为博主原创文章,转载请注明出处。
标签:
原文地址:http://blog.csdn.net/ydd97/article/details/47337239