fursov-da
?>

Дано целое число n (> 2 сформировать и вывести целочисленный массив размера n, содержащий n первых элементов последовательности чисел фибоначчи fk: f1 = 1, f2 = 1, fk = fk−2 + fk−1, k = 3, 4, . .

Информатика

Ответы

kazan-ugoop36
// PascalABC.NET 3.3, сборка 1547 от 07.10.2017
// Внимание! Если программа не работает, обновите версию!

procedure Fib(var a,b:integer);
begin
  (a,b):=(b,a+b)
end;

begin;
  var (n,p,q):=(ReadInteger('n='),1,1);
  var a:=ArrFill(n,1);
  for var i:=3 to n do begin Fib(p,q); a[i-1]:=q end;
  a.Println
end.

Пример
n= 13
1 1 2 3 5 8 13 21 34 55 89 144 233
manager-3
1. У файлі зберігається блок інформації.
2. Від програми в якому він створюється, редагується, зберігається.ї
3. Дозволяється використовувати до 255 символів.Дозволяється використовувати символи національних алфавітів, зокрема російського.Дозволяється використовувати пробіли та інші раніше заборонені символи, за винятком наступних дев'яти: / \ :*?"|.В імені файлу можна використовувати кілька точок. Розширенням імені вважаються всі символи, які стоять за останньою крапкою.
4. Для зручності і сортування.
krutikovas
Наивный алгоритм: используя два вложенных цикла, проверить все подстроки, являются ли они палиндромами. Такой алгоритм будет работать O(|S|^2), что при ограничении |S| <= 10^5 потребует примерно 10^10 / 2 сравнений, что достаточно долго.

Оптимизация: в центре у палиндрома четной длины всегда пара одинаковых символов. Их можно найти, а затем увеличивать длину до тех пор, пока это возможно. Плюс этого наблюдения в том, что если пара попадется не в центре, то максимальная длина подстроки-палиндрома с центром в этой паре, будет ограничена сверху. Однако в худшем случае (все символы одинаковы) всё равно придется произвести немалое число сравнений.

Однако задачу можно решить и за линейное время. Например, существует алгоритм Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А именно, если в длинную-длинную строку-палиндром входит другая подстрока-палиндром, то можно не начинать проверку заново, а использовать уже имеющуюся информацию.

Пример 1: "длинная" подстрока-палиндром:
cbbaabbaabbc
в которой известна подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром:
cbbaabbaabbc
Пример 2: "длинная" подстрока палиндром:
bbaabbaabbaa
Зная, что в ней есть подстрока-палиндром
bbaabbaabbaa,
можно явные сравнения для подстроки с центром в
bbaabbaabbaa
начинать уже с 
bbaabbaabbaa

Если не хочется писать самостоятельно, алгоритм Манакера легко находится.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дано целое число n (> 2 сформировать и вывести целочисленный массив размера n, содержащий n первых элементов последовательности чисел фибоначчи fk: f1 = 1, f2 = 1, fk = fk−2 + fk−1, k = 3, 4, . .
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Серопян
simplexsol
tany821
marinatehnomaster21
Роман
aleksvasin
vladislavk-market2
aquilonis
kris5009646
balabinatanya7174
marani2
AndreiFaikov1943
ragimovelshad
neblondinka19
topsalon