Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- int* prefix(char* string, int* answer)
- {
- int t=0, i=0, len= (int)strlen(string);
- answer[0] = 0;
- for (i =1; i < len; i++) {
- while ((t > 0) && (string[t] != string[i]))
- t = answer[t - 1];
- if (string[t] == string[i]) {
- t++;
- }
- answer[i] = t;
- }
- return answer;
- }
- int main(int argc, const char * argv[]) {
- int *answer;
- int len = (int)strlen(argv[1]), i = 0, temp = 0;
- answer = (int*)malloc(len * sizeof(int));
- answer = prefix(argv[1], answer);
- for (i=2; i <= len ; i++) {
- temp = i - answer[i -1];
- if ((i!= temp)&& (i % temp == 0))
- printf("%d %d\n", i, i/temp);
- }
- free(answer);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement