Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- void zf(char* s, int* p, int len)
- {
- for(int i = 0; i < len; i ++) p[i] = 0;
- for(int i = 1; i < len; ++i)
- {
- int t = p[i - 1];
- while(t > 0 && s[i] != s[t])
- t = p[t - 1];
- if(s[i] == s[t]) ++t;
- p[i] = t;
- }
- }
- int main(int argv, char* argc[])
- {
- //freopen("input.txt", "r", stdin);
- //printf("%s\n", argc[1]);
- char* str = argc[1];
- //scanf("%s", str);
- int p[strlen(str)];
- zf(str, p, strlen(str));
- for(int i = 2; i <= strlen(str); i ++)
- {
- if(i % (i - p[i - 1]) == 0 && p[i - 1] != 0)
- {
- printf("%d %d\n", i, i / (i - p[i - 1]));
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement