Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Фукс, Костюк задачник.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
460.29 Кб
Скачать

Задачи для самостоятельного решения 1

    1. Дан вещественный массив длины n. Найти сумму квадратов элементов массива.

    2. Дан вещественный массив длины n. Найти суммы положительных и отрицательных элементов массива.

    3. Для заданного целого неотрицательного n вычислить значение факториала . ( ).

    4. Для заданного целого неотрицательного n вычислить значения двойных факториалов и .

    5. Вычислить n-е число Фибоначчи , используя рекуррентное соотношение: , , при .

    6. Вычислить – n-е число Фибоначчи ранга 3, используя рекуррентное соотношение:

, , при .

    1. По заданному вещественному значению x и массиву вещественных коэффициентов вычислить значение полинома .

    2. Для заданного вещественного x и целого n вычислить приближенное значение

.

    1. Для заданного вещественного x и целого n вычислить приближенное значение

    1. Для заданного вещественного x и целого n вычислить приближенное значение

.

    1. Для заданного вещественного x и целого n вычислить приближенное значение

.

    1. Для заданного вещественного x и целого n вычислить приближенное значение

.

    1. Для заданного вещественного значения и числа итераций n вычислить приближенное значение , используя рекуррентное соотношение: , , при .

    2. Вычислить наибольший общий делитель (НОД) целых положительных чисел a и b, используя следующие соотношения:

НОД(a, b) = НОД(b, a),

НОД(a, 0) = a,

НОД(a, b) = НОД(b, a mod b), если .

    1. ** По заданному целому положительному значению N вычислить и сохранить в массиве набор десятичных цифр N.

2.Подпоследовательности в массиве

Подпоследовательностью в массиве называется группа элементов, обладающая каким-нибудь общим свойством. Например, несколько рядом стоящих равных друг другу элементов, или элементы, стоящие на подряд идущих четных местах в массиве и имеющие четное значение, и т.п.

Самая длинная подпоследовательность. Совокупность следующих друг за другом равных по значению элементов целочисленного массива A назовем подпоследовательностью. Найти подпоследовательность максимальной длины.

Полный ответ на вопрос задачи должен указывать, с какого элемента в исходном массиве начинается найденная подпоследовательность и какова ее длина.

Составим несколько тестов.

Исходный массив

Длина

Начало

1.

1 2 1 2 1 2 1 2 1 2

1

нет

2.

1 2 2 2 1 2 1 1 1 2

3

2

3.

1 2 2 2 1 1 1 1 1 1

6

5

4.

1 1 1 1 1 1 1 1 1 1

10

1

Тест №1 показывает, что подпоследовательности в массиве могут отсутствовать.

Тест №2 содержит 2 подпоследовательности одинаковой длины. В таких случаях в качестве результата берем первую из найденных.

Тест №3 показывает, что массив может завершаться подпоследовательностью.

В тесте №4 весь исходный массив является подпоследовательностью.

Совпадение соседних элементов всегда означает наличие подпоследовательности. Если соседние элементы не равны, то возможен один из четырех случаев:

  • одна подпоследовательность закончилась, а другая началась;

  • подпоследовательности не было, но другая начинается;

  • одна закончилась, а другой не будет;

  • подпоследовательностей нет вообще.

Такое разнообразие ситуаций можно легко объединить, если допустить существование подпоследовательностей длиной 1. Тогда любое несовпадение соседних элементов означает конец одной и начало другой подпоследовательности. Конечный результат от этого не пострадает, если считать, что максимальная длина, равная 1, означает отсутствие подпоследовательностей. Поскольку подпоследовательности не могут перекрываться, задача решается на основе последовательного сравнения друг с другом соседних элементов в массиве. Как только подпоследовательность закончилась, следует сравнить ее длину с ранее найденной максимальной

.

Договоримся использовать следующие переменные:

tekdl – длина текущей подпоследовательности;

teknach – начальный номер текущей подпоследовательности;

maxdl – максимальная длина;

maxnach – начальный номер искомой подпоследовательности.

Алгоритм 1.

Пошаговая разработка

начальные значения;

for i:=1 to n-1 do

if A[i]=A[i+1]

then идет подпоследовательность

else begin

подпоследовательность закончилась;

другая началась

end;

подпоследовательность закончилась;

начальные значения

tekdl:=1; teknach:=1; maxdl:=1;

идет подпоследовательность

tekdl:=tekdl+1;

подпоследовательность закончилась

if tekdl>maxdl

then begin

maxdl:=tekdl;

maxnach:=teknach

end;

другая началась

tekdl:=1;

teknach:=i+1;

Результат пошаговой разработки

tekdl:=1; teknach:=1; maxdl:=1;

for i:=1 to n-1 do

if A[i]=A[i+1]

then tekdl:=tekdl+1

else begin

if tekdl>maxdl

then begin

maxdl:=tekdl;

maxnach:=teknach

end;

tekdl:=1;

teknach:=i+1;

end;

if tekdl>maxdl

then begin

maxdl:=tekdl;

maxnach:=teknach

end;

Трудоемкость алгоритма – линейная.

Другой вариант решения этой задачи основан на применении циклов while.

Алгоритм 2.

Пошаговая разработка

начальные значения;

while не закончился массив do begin

идем по подпоследовательности;

подпоследовательность закончилась;

пропускаем неравные;

другая началась

end;

начальные значения

tekdl:=1; teknach:=1; maxdl:=1; i:=1;

не закончился массив

i<=n-1; {чтобы не выйти за границы массива при сравнении предпоследнего элемента с последним}

идем по подпоследовательности

while (i<=n-1)and(A[i]=A[i+1]) do begin

tekdl:=tekdl+1;

i:=i+1;

end;

подпоследовательность закончилась и другая началась детализируются так же, как в предыдущем алгоритме.

пропускаем неравные

while (i<=n-1)and(A[i]<>A[i+1]) do

i:=i+1;

Результат пошаговой разработки

tekdl:=1; teknach:=1; maxdl:=1; i:=1;

while i<=n-1 do begin

while (i<=n-1)and(A[i]=A[i+1]) do begin

tekdl:=tekdl+1;

i:=i+1;

end;

if tekdl>maxdl

then begin

maxdl:=tekdl;

maxnach:=teknach

end;

while (i<=n-1)and(A[i]<>A[i+1]) do

i:=i+1;

tekdl:=1;

teknach:=i;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]