НОМ_Задачи на составление алгоритмов

advertisement
Некоммерческая организация «Ассоциация московских вузов»
Государственное образовательное учреждение
высшего профессионального образования
Московский государственный индустриальный университет
ГОУ ВПО МГИУ
Научно-образовательный материал
«Задачи на составление алгоритмов»
Состав научно-образовательного коллектива:
Роганова Н.А., к.т.н.
Виноградова Л.А., ведущий инженер
Москва 2010 г.
Задачи на составление алгоритмов.
ЗАДАЧА Придумайте алгоритм, вводящий натуральное число, большее
единицы, который находит наименьший простой делитель этого числа.
ЗАДАЧА
Придумайте алгоритм, вводящий три целых числа и
определяющий, есть ли среди введенных чисел одинаковые или нет.
ЗАДАЧА . Придумайте алгоритм, вводящий три целых числа, который
находит второе по величине число, если оно существует.
ЗАДАЧА . Придумайте алгоритм, вводящий три целых числа, определяющий количество максимальных чисел среди введенных.
ЗАДАЧА . Придумайте алгоритм, вводящий действительное число,
который рассматривает это число, как координаты точки на прямой, и
находит расстояние от этой точки до отрезка [0,1].
ЗАДАЧА . Придумайте алгоритм, находящий n-ое простое число.
Простейшие задачи на программирование.
ЗАДАЧА Напишите программу, выводящую на экран строку текста
Здравствуй, мир!.
ЗАДАЧА. Напишите программу, печатающую на экране красивое
поздравление с новым учебным годом.
ЗАДАЧА . Напишите программу, вводящую имя пользователя (с
применением метода inputChars), которая затем приветствует его.
ЗАДАЧА
Напишите программу, вводящую натуральное число,
большее единицы, которая находит и печатает наименьший простой делитель этого числа.
ЗАДАЧА . Напишите программу, вводящую два целых числа а и Ь,
печатающую их, затем обменивающую значения этих переменных (так,
чтобы новое значение а стало равно старому значению Ь, и наоборот) и
вновь их печатающую.
ЗАДАЧА . Напишите программу, вводящую два целых числа а и Ь,
печатающую их, затем обменивающую значения этих переменных (так,
чтобы новое значение а стало равно старому значению Ь, и наоборот) и
вновь их печатающую, которая не использовала бы иных переменных,
кроме а и Ъ.
ЗАДАЧА . Напишите программу, вводящую три целых числа, и
печатающую максимальное из них.
ЗАДАЧА . Напишите программу, вводящую три целых числа, и
печатающую количество максимальных среди введенных чисел.
ЗАДАЧА . Напишите программу, вводящую три целых числа, и печатающую Yes в том случае, если среди введенных чисел есть
одинаковые, и No — иначе.
ЗАДАЧА . Напишите программу, вводящую три целых числа, и
печатающую второе по величине, если оно существует, и No — иначе.
ЗАДАЧА . Напишите программу, вводящую действительное число,
которая рассматривает это число, как координаты точки на прямой, и
печатает расстояние от этой точки до отрезка [0,1].
ЗАДАЧА . Напишите программу, вводящую три целых числа, и
печатающую с использованием всех возможностей класса Xterm как сами
числа, так и их среднее арифметическое.
ЗАДАЧА 7.19. Напишите программу, вводящую действительные коэффициенты a, b и с квадратного уравнения ах2-\-Ъх-\-с — 0 с положительным
дискриминантом, находящую оба корня этого уравнения.
ЗАДАЧА 7.20. Напишите программу, которая вводит три целых числа, и,
рассматривая эти числа, как координаты точек на прямой, печатает
расстояние между наиболее удаленными друг от друга.
ЗАДАЧА 7.21. Напишите программу, которая вводит действительные
координаты (х,у) и (а, Ь) двух точек на плоскости, и печатает расстояние от
точки М[х7 у) до единичной окружности с центром в точке С (а, Ь).
ЗАДАЧА 7.22. Напишите программу, которая вводит действительные
координаты (х,у) и (а, Ь) двух точек на плоскости, и печатает расстояние от
точки М(ж, у) до прямой О А, где О — начало координат, а А(а: Ь) —
отличная от О точка.
ЗАДАЧА 7.23. Напишите программу, вводящую три целых числа а, Ь и с,
печатающую мощность множества решений уравнения ах2 + Ъх + с = 0.
3. Задачи на предикаты.
ЗАДАЧА 7.24. Докажите, что выражение ( ( а Л Ъ) = (Ь V а)) является
предикатом.
ЗАДАЧА 7.25. Докажите, что выражение а V а — не предикат.
ЗАДАЧА 7.26. Докажите, что выражение ((ei Л (е2 V е3)) — ((ei Л е2) V (ei
Л ез))) является предикатом.
ЗАДАЧА 7.27. Докажите, что выражение ((е1Л(е2Лез)) — ((е1Ле2)Лез))
является предикатом.
ЗАДАЧА 7.28. Докажите, что выражение ((а V а) — не предикат.
ЗАДАЧА 7.29. Докажите, что выражение ((а => 6)) — не предикат.
ЗАДАЧА 7.30. Изобразите деревья вывода для каждого из законов
эквивалентности (см. страницу 45).
ЗАДАЧА 7.31. Вычислите значения предикатов Рх = {х = 0 Л х/(у — 2) - 0)
и Р2 = (х = 0 && х/(у - 2) = 0) в состоянии s = {{х, 7), (у, 2)}.
ЗАДАЧА 7.32. Вычислите значения предиката Р = (Зг 0 ^ г ^ 9 (г2 ^ 0)) Л
(Vj j2 ^ к) в состоянии s = {(&, 0)}.
ЗАДАЧА 7.33. Вычислите значения предиката Р = (\(х > у =^> 6) Л (6 =>■ х
> y))Wl(x > у =>■ 6) в состоянии s = {(ж, 3), (?/, 2), (6, F)}.
ЗАДАЧА 7.34. Вычислите значения предиката Р = (Ь =>■ (х > у)) Л
{{Ъ ^(х> у ) ) \ \ ( \ ( х > у) =ИЬ)) в состоянии s = {(х, 2), (у, 3), (6, Г)}.
ЗАДАЧА 7.35. Покажите, что все законы эквивалентности (см. стр. 45)
являются тавтологиями.
ЗАДАЧА 7.36. Запишите предикат, утверждающий, что если г < j, а т
> п, то и = v.
ЗАДАЧА 7.37. Запишите предикат, утверждающий, что самое большее
одно из следующих утверждений истинно: а < 6, Ь < с.
ЗАДАЧА 7.38. Запишите предикат, утверждающий, что ни одно из
следующих утверждений не является истинным: а < Ъ , Ъ < с ж х = у.
ЗАДАЧА 7.39. Запишите предикат, утверждающий, что следующие
утверждения не являются истинными одновременно: а < Ь , Ь < с ж х =
у.
ЗАДАЧА 7.40. Запишите предикат, утверждающий следующее: когда х
< у, у < z означает, что v = ги, но если х ^ г/, то у < z не может
выполняться; однако если v = ад, то х < у.
ЗАДАЧА 7.41. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 все элементы вырезки 6[j..fc] являются нулевыми.
ЗАДАЧА 7.42. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 ни один из элементов вырезки 6[j..fc] не нулевой.
ЗАДАЧА 7.43. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 некоторые из элементов вырезки b[j..k] нулевые.
ЗАДАЧА 7.44. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 все нули массива находятся в вырезке b[j..k].
ЗАДАЧА 7.45. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 некоторые нули массива находятся в вырезке
b\j..k].
ЗАДАЧА 7.46. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 справедливо высказывание: неверно, что все нули
массива находятся в вырезке 6[j..fc].
ЗАДАЧА 7.47. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 справедливо высказывание: неверно, что не все
нули массива находятся в вырезке b[j..k].
ЗАДАЧА 7.48. Запишите предикат, утверждающий, что для массива
Ь[0..п — 1] длины п > 0 справедливо высказывание: если в Ь[0..п — 1] есть
нуль, то он есть и в вырезке b[j..k].
п — 1] длины п > 0 справедливо высказывание: если в вырезке b[j..k] есть
два нуля, то j = 1.
ЗАДАЧА 7.50. Запишите предикат, утверждающий, что для массива Ь[0..п
— 1] длины п > 0 справедливо высказывание: элементы в вырезке 6[j..fc]
расположены в возрастающем порядке.
ЗАДАЧА 7.51. Запишите предикат, утверждающий, что для массива Ь[0..п
— 1] длины п > 0 справедливо высказывание: j является степенью двойки,
если j встречается в вырезке b[j..k].
ЗАДАЧА 7.52. Запишите предикат, утверждающий, что для массива Ь[0..п
— 1] длины п > 0 справедливо высказывание: если &[1], 6[2] и 6[3] есть
соответственно 3, 4 и 5, то j — 3.
ЗАДАЧА 7.53. Запишите предикат, который утверждает, что функция /:
{1,2, 3,4, 5} —>• {1,2, 3,4, 5} является сюръективной и отрицание этого
факта. Упростите получившиеся предикаты, если это возможно.
ЗАДАЧА 7.54. Запишите предикат, который утверждает, что функция /:
{1,2,3,4,5} —>• {1,2,3,4,5} является инъективной и отрицание этого факта.
Упростите получившиеся предикаты, если это возможно.
ЗАДАЧА 7.55. Запишите предикат, который утверждает, что функция /:
{1,2,3,4,5} —>• {1,2,3,4,5} является биективной и отрицание этого факта.
Упростите получившиеся предикаты, если это возможно.
ЗАДАЧА 7.56. Запишите предикат, который утверждает, что функция /:
{1,2,3,4,5} —> {1,2,3,4,5} все элементы, не превосходящие трех, не
увеличивает, и отрицание этого факта. Упростите получившиеся предикаты,
если это возможно.
ЗАДАЧА 7.57. Запишите предикат, который утверждает, что функция /:
{1, 2, 3,4, 5} —> {1, 2, 3,4, 5} все существует единственный элемент х Е {1, 2,
3, 4, 5}, который функция / уменьшает, и отрицание этого факта. Не
используйте при этом квантора 3!.
ЗАДАЧА 7.58. Основываясь на определении 6.4 и спецификации программы 6.1, докажите истинность эквивалентности {Q} S {R} — (Q =>-wp(S,
R)).
ЗАДАЧА 7.59. Основываясь на определении 6.4, докажите закон монотонности (Q =3- R) =>• (wp(S, Q) =^ wp(S, R)).
ЗАДАЧА 7.60. Основываясь на определении 6.4, докажите закон дистрибутивности дизъюнкции wp(S, Q) V wp(S, R) = wp(S} Q V R).
ЗАДАЧА 7.61. Вычислите и упростите wp("i=i+2; j=j-2; ",i + j = 0).
ЗАДАЧА 7.62. Вычислите и упростите wp("i=i+l; j=j-l;",z • j — 0).
ЗАДАЧА 7.63. Вычислите и упростите wp(,,x=x+y) ", ж < 2г/).
ЗАДАЧА 7.64. Вычислите и упростите w;p(Mx=(x+y)*(x-y) ; ",ж + у2 ф 0).
ЗАДАЧА 7.65. Вычислите и упростите w;]9("i=i+l; j=j+l; ", г = j).
ЗАДАЧА 7.66. Вычислите и упростите wp("x=a/h;"7x2 ^ 0).
ЗАДАЧА 7.67. Вычислите и упростите iup("i=l; s = b [ 0 ] ; M , l ^ i <
п Л в = Ь[0] + ... + 6[г-1]).
ЗАДАЧА 7.68. Вычислите и упростите w;p("a=0; п=1;",а2<п Л (а + 1)2>п).
ЗАДАЧА 7.69. Вычислите и упростите w;p("s=s+b[i] ; i=i+l;",0 <
г < n Л в = 6[0] + ... + Ь[г- 1]).
ЗАДАЧА 7.70. Вычислите и упростите wp("if (true) ; ", Л) для произ-
вольного предиката R.
ЗАДАЧА 7.71. Вычислите и упростите следующее слабейшее предусловие
wp("if (а > b) a=a-b; else b = b - a ; " , a > 0 Л b > 0).
ЗАДАЧА 7.72. Найдите такое значение выражения ж, включающее другие
переменные, для которого спецификация {Q} S {R} становится тавтологией:
{Т} "а=а+1; Ь=х;" {Ь — а + 1}.
ЗАДАЧА 7.73. Найдите такое значение выражения ж, включающее другие
переменные, для которого спецификация {Q} S {R} становится тавтологией:
{Г} "Ь=х; а=а+1; " {Ъ = а + 1}.
ЗАДАЧА 7.74. Найдите такое значение выражения ж, включающее другие
переменные, для которого спецификация {Q} S {R} становится тавтологией: {г
— j} "i=i+l; j= x ;" {г = j}.
ЗАДАЧА 7.75. Найдите такое значение выражения ж, включающее другие
переменные, для которого спецификация {Q} S {R} становится тавтологией: {г
— j} "j=x; i=i+l; " {г = j}.
ЗАДАЧА 7.76. Задача о банке с кофейными зернами. В банке имеется
несколько черных и белых кофейных зерен. Следующий процесс надо
повторять, пока это возможно:
— случайно выберите из банки два зерна и
— если они одного цвета, отбросьте их, но положите в банку
другое черное зерно (имеется достаточный запас черных зе
рен, чтобы делать это);
- если они разного цвета, поместите белое зерно обратно в бан
ку и отбросьте черное зерно.
Выполнение этого процесса уменьшает количество зерен в банке на
единицу. Повторение процесса должно прекратиться, когда в банке останется
всего одно зерно, так как тогда нельзя уже выбрать два зерна. Можно ли чтото сказать о цвете оставшегося зерна, если известно, сколько вначале в банке
было черных и белых зерен?
ЗАДАЧА 7.77. Замыкание кривой. Двое играют на листе клетчатой бумаги
произвольной формы и размера в следующую игру. Игроки делают ходы
поочередно и начинает игрок А. Ход игрока А состоит в том, что он соединяет
горизонтальным или вертикальным отрезком два соседних узла решетки,
проводя непрерывную линию по границе одного из квадратиков (клеточек)
бумаги. Ход игрока В сводится к проведению пунктирной линии, обладающей
теми же свойствами. Проводить линию по уже нарисованной противником
нельзя.
Игрок А выигрывает, если ему удается получить полностью замкнутую
кривую, состоящую из непрерывных линий. Если игрок А не сумеет получить
замкнутую кривую, то считается, что победил игрок В. Существует ли
стратегия, гарантирующая выигрыш на произвольной доске для одного из
игроков?
4. Задачи на особенности представления чисел в ЭВМ.
ЗАДАЧА 7.78. Предъявите целое число х такое, что х + 1 < х.
ЗАДАЧА 7.79. Предъявите действительное (типа double) число х такое,
что х + 1 = ж, а {х • 2)/2 ф х. Воспользуйтесь тем, что класс Java. lang.Double
определяет константу MAX_VALUE.
ЗАДАЧА 7.80. Предъявите такие действительные (типа double) числа а, Ъ
и с такие, что а + (Ь + с) ф {а + Ъ) + с.
ЗАДАЧА 7.81. Явно перечислите и изобразите на числовой прямой все
точки множества Шм, сделав следующие допущения: числа хранятся в
нормализованной форме с плавающей точкой; для хранения как мантиссы, так
и порядка числа отводится по три бита (из которых в обоих случаях один
является знаковым); никаких особых значений нет.
ЗАДАЧА 7.82. Предъявите действительное (типа double) число х такое,
что (х/2) • 2 ф х. Воспользуйтесь тем, что класс Java.lang.Double определяет
константу MIN_VALUE.
ЗАДАЧА 7.83. Определите (приближенно) MAC HEPS (машинное
эпсилон) для типов double и float. Машинным эпсилоном называется
наибольшее число х данного типа, удовлетворяющее соотношению 1 + ж =
1.
ЗАДАЧА 7.84. Предъявите последовательность чисел (типа float), при
суммировании которой в прямом и обратном порядке результаты будут
отличаться не менее, чем вдвое.
ЗАДАЧА 7.85. Напишите программу, вводящую действительные коэффициенты а, 6 и с квадратного уравнения ах2 + Ьх + с — 0 с положительным дискриминантом, находящую оба корня этого уравнения достаточно
точно во всех случаях.
5. Задачи на рекурсию и итерацию.
ЗАДАЧА 7.86. Напишите рекурсивную программу, вычисляющую
факториал введенного натурального числа.
ЗАДАЧА 7.87. Напишите рекурсивную программу, печатающую п-ое
число Фибоначчи.
ЗАДАЧА 7.88. Напишите итерационную программу, вычисляющую
факториал введенного натурального числа.
ЗАДАЧА 7.89. Напишите программу, печатающую п-ое число Фибоначчи, которая имела бы линейную сложность.
ЗАДАЧА 7.90. Напишите программу, печатающую п-ое число Фибоначчи, которая имела бы логарифмическую сложность.
ЗАДАЧА 7.91. Напишите программу, вычисляющую факториал введенного натурального числа, не использующую ни итерации, ни рекурсии
(имеющую сложность 0(1)).
УКАЗАНИЕ. Воспользуйтесь тем, что факториал очень быстро растущая функция, а множество Ъм — ограничено, и поэтому любая программа, работающая с величинами типа int, способна вычислить факториал только очень небольших чисел.
ЗАДАЧА 7.92. Напишите программу, перемножающую два натуральных числа, которая не использует операции умножения.
ЗАДАЧА 7.93. Напишите программу, перемножающую два натуральных числа, которая не использует операции умножения, и имеет при этом
логарифмическую сложность.
УКАЗАНИЕ. Можете попробовать разобраться в программе, решающей задачу 5.5. В ней выполняется более сложное действие — квадратная
матрица возводится в степень п за логарифмическое время.
ЗАДАЧА 7.94. Напишите программу, вводящую целое число а и натуральное п, вычисляющую и печатающую степень ап без использования вызова
функции возведения в степень.
ЗАДАЧА 7.95. Напишите программу (быстрое возведение в степень),
возводящую целое число а в целую неотрицательную степень Ъ без вызова
функции возведения в степень с временной сложностью ©(logЪ).
ЗАДАЧА 7.96. Напишите программу, печатающую сумму квадратов всех
натуральных чисел от 1 до введенного натурального п, которая имела бы
константную сложность, т.е. не использовала бы ни итерации, ни рекурсии.
ЗАДАЧА 7.97. Напишите программу, вводящую натуральное число, и
печатающую Yes, если оно является простым и No иначе.
ЗАДАЧА 7.98. Напишите программу, печатающую n-ое простое число.
ЗАДАЧА 7.99. Напишите рекурсивную программу, печатающую биноминальный коэффициент С% для целых п и к, где 0 ^ к ^ п. Для неотрицательных п и к имеют место следующие соотношения: С® — С™ = 1,
°п+1 — °п
+ игг-
ЗАДАЧА 7.100. Напишите программу, печатающую старшую цифру в
десятичной записи введенного натурального числа.
ЗАДАЧА 7.101. Напишите программу, печатающую количество цифр в
десятичной записи введенного натурального числа.
ЗАДАЧА 7.102. Напишите программу, печатающую десятичную запись
введенного натурального числа, использующую только операции печати цифр
от 0 до 9.
ЗАДАЧА 7.103. Напишите программу, печатающую количество натуральных решений неравенства х2 + у2 < п для введенного натурального числа
п.
ЗАДАЧА 7.104. Напишите программу, вводящую натуральное число Л, и
печатающую количество точек с целочисленными координатами внутри
замкнутого шара радиуса R с центром в начале координат.
ЗАДАЧА 7.105. Напишите программу, вводящую целые коэффициенты
многочлена пятой степени в порядке убывания его степеней, и печатающую
последовательность коэффициентов его куба.
ЗАДАЧА 7.106. Напишите программу, вводящую натуральное число ж, и
печатающую наиболее близкую к л/х простую дробь вида т/п со знаменателем п, не превосходящем 100.
ЗАДАЧА 7.107. Напишите программу, печатающую первые к пар простых чисел. Два числа а и Ь образуют пару простых чисел, если они оба
простые и Ъ — а + 2.
ЗАДАЧА 7.108. Напишите программу, находящую сумму
1
1
1
1
0!
+
il+2!+ ' "
+
Ы'
сложность которой была бы линейной.
ЗАДАЧА 7.109. Напишите программу, находящую наибольший общий
делитель gcd(X7 Y) двух натуральных чисел X и Y.
ЗАДАЧА 7.110. Напишите программу, печатающую квадраты всех целых чисел от нуля до введенного натурального п, не использующую операций умножения и имеющую линейную сложность.
ЗАДАЧА 7.111. Напишите программу, находящую количество
счастливых билетов с шестизначными номерами. Билет называется
счастливым, если сумма его первых трех цифр равна сумме трех
последних.
6. Задачи на массивы.
ЗАДАЧА 7.112. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, печатает его, затем инвертирует (то есть
меняет местами первый элемент с последним, второй — с предпоследним
и т.д.), и вновь печатает.
ЗАДАЧА 7.113. Напишите программу, печатающую максимальный
элемент непустого массива.
ЗАДАЧА 7.114. Напишите программу, печатающую количество максимальных элементов непустого массива, в которой используется только
один цикл.
ЗАДАЧА 7.115. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, печатает его, затем сортирует (то есть переставляет его элементы так, чтобы они располагались в неубывающем
порядке), и вновь печатает.
ЗАДАЧА 7.116. Напишите программу, вводящую фразу русского
языка (с использованием метода inputChars), которая определяет,
является ли введенная фраза палиндромом.
УКАЗАНИЕ. Палиндром — эта фраза, инвертирование которой не изменяет ее. При этом все пробелы во фразе игнорируются.
ЗАДАЧА 7.117. Напишите программу, печатающую количество нулевых элементов в заданном целочисленном массиве.
ЗАДАЧА 7.118. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, и печатает Yes, если массив симметричен, и No
иначе.
ЗАДАЧА 7.119. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, циклически сдвигает элементы массива вправо
на одну позицию, и печатает результат. Цикличность означает, что последний
элемент массива становится самым первым его элементом.
ЗАДАЧА 7.120. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, циклически сдвигает элементы массива вправо
на к позиций, и печатает результат. Число к вводится с клавиатуры, а
сложность программы должна быть в(п).
ЗАДАЧА 7.121. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, заменяет все элементы массива, кроме крайних,
на полусумму соседей, и печатает результат.
ЗАДАЧА 7.122. Напишите программу (линейный поиск), определяющую
первое вхождение заданного целого числа х в массив целых чисел, заведомо
содержащий это число.
ЗАДАЧА 7.123. Напишите программу, которая вводит с клавиатуры два
непустых массива целых чисел в диапазоне от нуля до девяти, и, считая эти
массивы десятичным представлением двух чисел, печатает их разность.
ЗАДАЧА 7.124. Напишите программу, которая вводит с клавиатуры два
непустых неубывающих массива целых чисел, и печатает те и только те
элементы, которые встречаются хотя бы в одном из массивов (объединение
множеств).
ЗАДАЧА 7.125. Напишите программу, которая вводит с клавиатуры два
непустых неубывающих массива целых чисел, и печатает те и только те
элементы, которые встречаются в обоих массивах (пересечение множеств) .
ЗАДАЧА 7.126. Напишите программу, которая вводит с клавиатуры два
непустых неубывающих массива целых чисел, и печатает те и только те
элементы, которые входят только в один из массивов (симметрическая
разность множеств).
ЗАДАЧА 7.127. Напишите программу, печатающую значение многочлена
степени п ) 0 в заданной точке
XQ.
Коэффициенты многочлена хранятся в
массиве а в порядке убывания степеней и являются целыми числами, также
как и значение XQ. Величины n, XQ
И
элементы массива а изменять в
программе нельзя.
ЗАДАЧА 7.128. Напишите программу (двоичный поиск), определяющую для упорядоченного по неубыванию массива целых чисел, содержащего число ж, первое вхождение этого целого числа, которая имела бы
логарифмическую сложность.
УКАЗАНИЕ. Воспользуйтесь методом деления пополам, известным из
курса математического анализа.
ЗАДАЧА 7.129. Напишите программу, заносящую в массив первые
100 натуральных чисел, делящихся на 13 или на 17, и печатающую его.
ЗАДАЧА 7.130. Напишите программу, которая в массиве целых чисел
длины га + п, рассматриваемом как соединение двух его частей — начала
длины га и конца длины гг, обменивает начало и конец, не используя
дополнительных массивов.
ЗАДАЧА
7.131.
Напишите
программу,
вводящую
целые
коэффициенты многочлена и находящую все его рациональные корни.
УКАЗАНИЕ. Воспользуйтесь теоремой Безу, согласно которой числитель р любого рационального корня многочлена х = — является делителем
свободного члена, а знаменатель q — делителем старшего коэффициента.
ЗАДАЧА 7.132. Напишите программу, которая вводит с клавиатуры
непустой массив целых чисел, и печатает число локальных максимумов
(элемент является локальным максимумом, если он не имеет соседей,
больших, чем он сам).
7. Задачи на последовательности.
ЗАДАЧА 7.133. Напишите программу, вводящую последовательность
целых чисел, и печатающую количество ее максимальных элементов.
ЗАДАЧА 7.134. Напишите программу, вводящую последовательность
целых чисел, и печатающую количество различных значений квадратов ее
элементов.
ЗАДАЧА 7.135. Напишите программу, вводящую последовательность
вещественных
чисел,
и
печатающую
среднее
арифметическое
ее
элементов (для непустой последовательности).
ЗАДАЧА 7.136. Напишите программу, вводящую последовательность
целых чисел, и печатающую максимальное число идущих подряд одинаковых элементов.
ЗАДАЧА 7.137. Напишите программу, вводящую последовательность
целых чисел, и печатающую номера первого и последнего ее максимальных элементов.
ЗАДАЧА 7.138. Напишите программу, вводящую последовательность
целых чисел, и печатающую номер первого элемента, равного нулю, и нуль
при отсутствии такого элемента в последовательности.
ЗАДАЧА 7.139. Напишите программу, вводящую последовательность
целых чисел, и печатающую число элементов, больших предыдущего (первый элемент последовательности тоже считается таким).
ЗАДАЧА 7.140. Напишите программу, вводящую последовательность
целых чисел, и печатающую второй по величине ее элемент и No, если
такого элемента нет.
ЗАДАЧА 7.141. Напишите программу, вводящую последовательность
целых чисел, и печатающую три ее таких (не обязательно различных)
элемента ж, у и z, что ху = z, или No, если таких элементов нет.
ЗАДАЧА 7.142. Напишите программу, вводящую последовательность
целых чисел, и печатающую максимальную длину монотонного участка ее
элементов.
ЗАДАЧА 7.143. Напишите программу, вводящую последовательность из
нулей и единиц, печатающую число групп из единиц, разделенных нулями.
ЗАДАЧА 7.144. Напишите программу, вводящую последовательность
целых чисел, и печатающую количество вхождений в нее фрагмента 1, 2, 3, 4,
5, 6.
ЗАДАЧА 7.145. Напишите программу, вводящую последовательность
целых чисел, и печатающую количество вхождений в нее фрагмента 1, 2, 1, 2,
1, 2.
Download