Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию [pdf]

.pdf
Скачиваний:
740
Добавлен:
02.05.2014
Размер:
6.04 Mб
Скачать

задачи: k,l, n, a1,b1, c1, a2 ,b2 , c2 ,..., an ,bn , cn , где k- число рабочих муравьев, помеченных в прошлом году, l- предположительное общее число рабочих муравьев в прошлом году. Смысл остальных чисел разъяснен выше.

801. «Зависимость веса от роста». Часто пытаются «уложить» некоторые экспериментальные или статистические данные в некоторую простую формулу. Пусть, например, обследовано п взрослых людей с нормальным телосложением и измерен рост (в см) xi и вес (в кг) yi каждого из них. Можно пытаться на основании этих измерений получить формулу вида у = ах+b, выражающую вес у через рост х. Конечно, трудно рассчитывать на то, что для каких-либо конкретных а и 6 будут с абсолютной точностью выполнены все п равенств yi = axi + b(i = 1,..., n). Но нетрудно найти а и b такие, что величина f(а, b), равная

(ax + b

y )2 + (ax

2

+ b

y

2

)2 + ... +

(ax

n

+ b y

n

)2

, , имеет наименьшее из

1

1

 

 

 

 

 

 

 

возможных значений (рис. 57). Для выполнения этого условия

достаточно, чтобы *)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (a,b) = 0,f (a,b)

= 0 .

 

 

 

 

 

 

a

 

 

b

 

 

 

Последние равенства дают два линейных уравнения для определения а и b (это частный случай метода наименьших квадратов, принадлежащего Гауссу):

(x2

+

... +

x2 )a +

(x +

...+

x

n

)b =

x y + ... +

x

n

y

n

,

1

 

 

n

1

 

 

 

1 1

 

 

 

(x1 +

... +

xn )a +

nb =

y1 +

... + yn .

 

 

 

 

 

 

Даны действительные числа x1,..., xn , y1,..., yn . Получить указанные а и b.

*) Пусть g(t1 , ..., tk ) - функция указанных действительных переменных, ∂ g /ti - это частная производная g по ti , т. е. результат

дифференцирования g по ti , при котором все величины, кроме ti , счи-

таются постоянными.

y

y = kx + b

x

Рис.57 По поводу этой задачи сделаем следующее замечание.

Действительно, этим способом можно получить некоторые a и b; более того, считается, например, что для мужчин с нормальным телосложением a 1,b ≈ − 100 . Однако значительно более точную формулу можно, видимо, получить, используя не многочлен первой степени ах+ b, а многочлен третьей степени ax3 + bx2 + cx + d (ср. с

задачей 793 6). Этот многочлен тоже можно искать методом наименьших квадратов.

§27. Тексты *)

*) Способ задания текста может выбираться в зависимости от используемого языка программирования и от того, какие сложности готов преодолевать решающий задачу. Текст может быть последовательностью символов (в частности - содержимым символьного файла), строкой, группой строк (в частности - содержимым текстового файла) и т. д.

802. Дан текст; найти наибольшее количество цифр, идущих в нем подряд.

803. Дан текст; определить, содержит ли он символы, отличные от букв и пробела.

804. Дан текст.

а) Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малых латинских букв,

предшествующих первому вхождению символа *, заменить на цифру 3.

б) Если в тексте нет символа +, то оставить текст без изменения, иначе каждую из цифр, предшествующую первому вхождению символа +, заменить символом - .

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

806. Дан текст; выяснить, является ли этот текст: а) идентификатором; б) десятичной записью целого числа.

807. Дана символьная матрица размера п× т. Получить последовательно все строки матрицы, исключая те, для которых есть равные среди строк с меньшими номерами.

808. Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть, как и прежде (см. задачу 269), словами.

а) Для каждого из слов указать, сколько раз оно встречается среди всех слов, образованных символами данного текста.

б) Найти все слова, содержащие наибольшее количество гласных латинских букв (a, e, i, o, u).

в) Найти все слова, в которых доля букв a, b максимальна. г) В тех словах, которые оканчиваются сочетанием букв ing,

заменить это окончание на ed.

809. Дано натуральное число п. Получить символьное представление п в виде последовательности цифр и пробелов отделяющих группы по три цифры, начиная справа. Например, если n=1753967, то должно получиться 1 753 967.

810. Дано натуральное число п ( n 1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д.).

811. Дано натуральное число n, равное выраженной в копейках цене некоторого товара, например 317, 5005, 100 и т. д. Выразить цену в рублях и копейках, например 3 руб. 17 коп., 50 руб. 05 коп., 1 руб. 00 коп. и т.д. (число копеек записывается всегда двумя цифрами).

812. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, - , *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков.

а) Выяснить, встречается ли в данном тексте группа букв one. б) Выяснить, верно ли, что в данном тексте больше групп букв,

чем групп знаков.

в) Если в данном тексте имеется не менее двух групп букв, то каждый знак +, встречающийся между двумя первыми по порядку группами букв, заменить цифрой 1, знак - заменить цифрой 2, а знак * - цифрой 3. Иначе оставить текст без изменений.

г) Подсчитать число вхождений буквы f в первые три группы букв (в предположении, что текст содержит не менее трех групп букв).

д) Найти число таких групп букв, которые начинаются и кончаются одной и той же буквой.

е) Найти все такие группы букв, в которые буква а входит не менее двух раз.

ж) Найти самую длинную группу цифр. Если эту наибольшую длину имеет несколько групп, то взять первую по порядку.

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

следует цифра, то также оставить текст без изменения. Иначе каждую цифру, принадлежащую группе цифр, следующей за начальной группой малых латинских букв, заменить символом *.

814. Дан текст.

а) Найти номер первой по порядку группы цифр (см. задачу 812), начинающейся цифрой 2.

б) Найти число тех групп букв (см. задачу 812), которые заканчиваются той же буквой, что и первая группа букв.

в) Если в данном тексте есть группа знаков (см. задачу 812), начинающаяся знаком *, то взять первую по порядку из них и в следующей группе знаков (если таковая имеется) заменить каждый из знаков знаком +.

815. Шахматную доску будем представлять символьной матрицей размера 8х8. Даны натуральные числа п и т

(1 ≤ n ≤ 8,1 ≤ m ≤ 8 ) - номера вертикали и горизонтали, определяющие