Task
The first line of the input will give the number of test cases, T. In each test case, a string
S
is given. You have to find stringp
of minimum length such that there exists a positive integerk
for whichp*k=S
.
Sample Input
5 ABAB ABABABABAB ASDA ASAASA B
Sample Output
AB AB ASDA ASA B
The code
#include <stdio.h> #include <string.h> int main() { int T; scanf("%d", &T); for (int i=0; i<T; i++) { char S[1001]; scanf("%s", S); int len = strlen(S); char p[1001], trial[1001]; p[0]=S[0]; int letter=1; while (strlen(p)!=strlen(S)) { if (strlen(p)<strlen(S)) { strncpy(trial, S+letter, letter); if (!strcmp(p, trial)) { break; } else { p[letter]=S[letter]; letter++; } } else if (strlen(p)==strlen(S)) { break; } } printf("%s\n", p); } return 0; }