Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. int* prefix(char* string, int* answer)
  5. {
  6.     int  t=0, i=0, len= (int)strlen(string);
  7.     answer[0] = 0;
  8.     for (i =1; i < len; i++) {
  9.         while ((t > 0) && (string[t] != string[i]))
  10.             t = answer[t - 1];
  11.         if (string[t] == string[i]) {
  12.             t++;
  13.         }
  14.         answer[i] = t;
  15.     }
  16.     return answer;
  17. }
  18. int main(int argc, const char * argv[]) {
  19.     int *answer;
  20.     int len = (int)strlen(argv[1]), i = 0, temp = 0;
  21.     answer = (int*)malloc(len * sizeof(int));
  22.     answer = prefix(argv[1], answer);
  23.     for (i=2; i <= len ; i++) {
  24.         temp = i - answer[i -1];
  25.         if ((i!= temp)&& (i % temp == 0))
  26.             printf("%d %d\n", i, i/temp);
  27.     }
  28.     free(answer);
  29.    
  30.     return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement