задача со строкой
Вам дана строка. Циклическим сдвигом строки 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, время: 00:32. |