задача со строкой
Вам дана строка. Циклическим сдвигом строки s длины n называется строка, полученная из исходной путём отбрасывания первых 0 ≤ k < n символов и приписывания их в конец. Необходимо посчитать, сколько раз среди всех циклических сдвигов строки встречается лексикографически минимальный циклический сдвиг.
Ограничение по времени: 0.6 секунд Ограничение по памяти: 256 мегабайт Формат входного файла: Единственная строка входного файла содержит строку S. Она непуста, состоит из маленьких латинских букв, и её длина не превосходит 10 000 000. Формат выходного файла: Выведите единственное число – искомое количество минимальных циклических сдвигов. Пробовал таким способом, но выдаёт ошибку(( Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\My Programms\EasyPHP-DevServer-13.1VC11\data\localweb\scripts\5\5.php on line 5
$S = preg_split('/\s+/', trim(file_get_contents('input.txt')))[0] ;
$str = $S ;
$n = 1 ;
for($i = 0; $i < strlen($S); $i++) {
$S = substr($S, 1) . substr($S, 0, 1) ;
if($S < $str) {
$str = $S ;
$n = 1 ;
} else if($S == $str)
$n++ ;
} ;
echo $n ;
|
| Часовой пояс GMT +3, время: 01:07. |