Сдвиг текста - Turbo Pascal
Формулировка задачи:
Мальчик Вася написал однажды на листе бумаги строчку, состоящую из больших и маленьких латинских букв, а после этого ушел играть в футбол. Когда он вернулся, то обнаружил, что его друг Дима написал под его строкой еще одну строчку такой же длины. Дима утверждает, что свою строчку он получил циклическим сдвигом строки Кирилла направо на несколько шагов(циклический сдвиг строки abcde на 2 позиции направо даст строку deabc). Однако Дима известен тем, что может случайно ошибиться в большом количестве вычислений, поэтому Кирилл в растерянности - верить ли Диме? Помогите ему!
По данным строкам выведите минимально возможный размер сдвига или -1, если Дима ошибся.
Входные данные
Первые две строки входного файла INPUT.TXT содержат строки Кирилла и Димы соответственно. Строки состоят только из латинских символов. Длины строк одинаковы, не превышают 10000 и не равны 0.
Выходные данные
В выходной файл OUTPUT.TXT выведите единственное число - ответ на поставленную задачу.
Пример:
INPUT.TXT
abcde
deabc
OUTPUT.TXT
2
Думаю ошибка в частных случаях.
На 5 тесте ложится.
Решение задачи: «Сдвиг текста»
textual
Листинг программы
var a, b: array [0..10000] of Char; i, j, n: Integer; begin Assign(input,'INPUT.TXT'); Reset(input); Assign(output,'OUTPUT.TXT'); Rewrite(output); ReadLn(a); ReadLn(b); j:=-1; n:=0; while a[n]<>#0 do Inc(n); i:=0; while b[i]<>#0 do Inc(i); Inc(b[i]); { барьер } if i=n then begin j:=0; while j<n do begin i:=0; while a[i]=b[(i+j) mod n] do Inc(i); if i=n then Break; Inc(j); end; if j=n then j:=-1; end; WriteLn(j); Close(input); Close(output); end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д