Вычисление разницы во времени. Число встречных пароходов

В предыдущем задании мы использовали Питон для простых разовых вычислений, используя интерактивный режим. Например, было задание вычислить длину гипотенузы прямоугольного треугольника по ее катетам. Запустите Wing IDE, создайте новый файл и напишите следующий текст:

A = 179 b = 197 c = (a ** 2 + b ** 2) ** 0.5 print (c)

Здесь мы используем переменные — объекты, в которых можно сохранять различные (числовые, строковые и прочие) значения. В первой строке переменной a присваивается значение 179, затем переменной b присваивается значение 971, затем переменной c присваивается значение арифметического выражения, равному длине гипотенузы.

После этого значение переменной c выводится на экран.

Сохраните этот текст в файле с именем hypot.py . Затем выполните эту программу (Ctrl+Alt+V, или зелёный треугольник, или Source-Evaluate File in Python shell).

Интерпретатор языка Питон выполняет ту последовательность команд, которая сохранена в файле. При этом значения вычисленных выражений не выводятся на экран (в отличии от интерактивного режима), поэтому для того, чтобы вывести результат работы программы, то есть значение переменной c , нам понадобится специальная функция print .

Ввод данных: функция input()

Пример выше неудобен тем, что исходные данные для программы заданы в тексте программы, и для того, чтобы использовать программу для другого треугольника необходимо исправлять текст программы. Это неудобно, лучше, чтобы текст программы не менялся, а программа запрашивала бы у пользователя данные, необходимые для решения задачи, то есть запрашивала бы значения двух исходных переменных a и b . Для этого будем использовать функцию input() , которая считывает строку с клавиатуры и возвращает значение считанной строки, которое сразу же присвоим переменым a и b:

A = input() b = input()

Правда, функция input возвращает текстовую строку, а нам нужно сделать так, чтобы переменные имели целочисленные значения. Поэтому сразу же после считывания выполним преобразование типов при помощи фунцкии int , и запишем новые значения в переменные a и b .

A = int(a) b = int(b)

Можно объединить считывание строк и преобразование типов, если вызывать функцию int для того значения, которое вернет функция input:

A = int(input()) b = int(input())

Теперь мы можем не меняя исходного кода программы многократно использовать ее для решения различных задач. Для того нужно запустить программу и после запуска программы ввести с клавиатуры два числа, нажимая после кажого числа клавишу Enter . Затем программа сама выведет результат.

01: Гипотенуза

Дано два числа a и b . Выведите гипотенузу треугольника с заданными катетами.

Пример

Ввод Вывод
3
4
5.0

Вывод данных: функция print()

Функция print может выводить не только значения переменных, но и значения любых выражений. Например, допустима запись print(2 + 2 ** 2) . Также при помощи функции print можно выводить значение не одного, а нескольких выражений, для этого нужно перечислить их через запятую:

A = 1 b = 2 print(a, "+", b, "=", a + b) В данном случае будет напечатан текст 1 + 2 = 3: сначала выводится зание переменной a , затем строка из знака “+”, затем значение переменной b , затем строка из знака “=”, наконец, значение суммы a + b .

Обратите внимание, выводимые значение разделяются одним пробелом. Но такое поведение можно изменить: можно разделять выводимые значения двумя пробелами, любым другим символом, любой другой строкой, выводить их в отдельных строках или не разделять никак. Для этого нужно функции print передать специальный именованный параметр, называемый sep , равный строке, используемый в качестве разделителя (sep — аббревиатура от слова separator, т.е. разделитель). По умолчанию параметр sep равен строке из одного пробела и между значениями выводится пробел. Чтобы использовать в качестве разделителя, например, символ двоеточия нужно передать параметр sep , равный строке ":" :

Print(a, b, c, sep = ":")

Аналогично, для того, чтобы совсем убрать разделитель при выводе нужно передать параметр sep , равный пустой строке:

Print(a, "+", b, "=", a + b, sep = "")

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

Print(a, b, sep = "\n")

Символ обратного слэша в текстовых строках является указанием на обозначение специального символа, в зависимости от того, какой символ записан после него. Наиболее часто употребляется символ новой строки "\n" . А для того, чтобы вставить в строку сам символ обратного слэша, нужно повторить его два раза: "\\" .

Вторым полезным именованным параметром функции print является параметр end , который указывает на то, что выводится после вывода всех значений, перечисленных в функции print . По умолчанию параметр end равен "\n" , то есть следующий вывод будет происходить с новой строки. Этот параметр также можно исправить, например, для того, чтобы убрать все дополнительные выводимые символы можно вызывать функцию print так:

Print(a, b, c, sep = "", end = "")

02: Следующее и предыдущее

Напишите программу, которая считывает целое число и выводит текст, аналогичный приведенному в примере (пробелы важны!):

Пример

Ввод Вывод
179 The next number for the number 179 is 180.
The previous number for the number 179 is 178.

Целочисленная арифметика

Для целых чисел определены ранее рассматривавшиеся операции + , - , * и ** . Операция деления / для целых чисел возвращает значение типа float . Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.

Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // . Она возвращает целое число: целую часть частного. Например:

>>> 17 // 3 5 >>> -17 // 3 -6

Другая близкая ей операция: это операция взятия остатка от деления, обозначаемая % :

>>> 17 % 3 2 >>> -17 % 3 1

03: Дележ яблок

\(n\) школьников делят \(k\) яблок поровну, неделяющийся остаток остается в корзинке. Сколько яблок достанется каждому школьнику? Сколько яблок останется в корзинке? Программа получает на вход числа \(n\) и \(k\) и должна вывести два числа: количество яблок у каждого школьника и количество яблок, оставшихся в корзинке.

Пример

05: Последняя цифра

Дано натуральное число. Выведите его последнюю цифру.

Пример

07: Сумма цифр

Дано трехзначное число. Найдите сумму его цифр.

Пример

09: Шнурки

Обувная фабрика собирается начать выпуск элитной модели ботинок. Дырочки для шнуровки будут расположены в два ряда, расстояние между рядами равно \(a\), а расстояние между дырочками в ряду \(b\). Количество дырочек в каждом ряду равно \(N\). Шнуровка должна происходить элитным способом “наверх, по горизонтали в другой ряд, наверх, по горизонтали и т.д.” (см. рисунок). Кроме того, чтобы шнурки можно было завязать элитным бантиком, длина свободного конца шнурка должна быть \(l\). Какова должна быть длина шнурка для этих ботинок?

Программа получает на вход четыре натуральных числа \(a\), \(b\), \(l\) и \(N\). Программа должна выводить одно число – искомую длину шнурка.

Пример

11: Электронные часы - 1

Дано число n . С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.

Пример

Ввод Вывод
150 2 30
1441 0 1

12: Электронные часы - 2

Электронные часы показывают время в формате h:mm:ss , то есть сначала записывается количество часов, потом обязательно двузначное количество минут, затем обязательно двузначное количество секунд. Количество минут и секунд при необходимости дополняются до двузначного числа нулями.

С начала суток прошло n секунд. Выведите, что покажут часы.

Пример

Примечание. Решением задачи не является такой код:

A = input () b = input () print (b, a)

14: Обмен значений - 2

Решите предыдущую задачу без использования дополнительной переменной.

15: Конец уроков

В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут.

Дан номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок. Выведите два целых числа: время окончания урока в часах и минутах.

Пример

17: Разность времен

Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа — часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени. Выведите число секунд между этими моментами времени.

Пример

19: Дележ яблок - 3

\(n\) школьников делят \(k\) яблок “поровну”, то есть так, чтобы количество яблок, доставшихся любым двум школьникам, отличалось бы не более, чем на 1.

Программа получает на вход числа \(n\) и \(k\) и должна вывести количество школьников, которым достанется яблок меньше, чем некоторым из их товарищей.

Пример

21: Симметричное число

Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева незначащими нулями.

Пример

23: Часы

В часах села батарейка, и они стали идти вдвое медленнее. Когда на часах было \(x_1\) часов \(y_1\) минут, правильное время было \(a_1\) часов \(b_1\) минут. Сколько времени будет на самом деле, когда часы в следующий раз покажут \(x_2\) часов \(y_2\) минут?

Программа получает на вход числа \(x_1\), \(y_1\), \(a_1\), \(b_1\), \(x_2\), \(y_2\) в указанном порядке. Все числа целые. Числа \(x_1\), \(a_1\), \(x_2\) — от 0 до 23, числа \(y_1\), \(b_1\), \(y_2\) — от 0 до 59.

Выведите два числа \(a_2\) и \(b_2\), определяющие сколько будет времени на самом деле, когда на часах будет \(x_2\) часов \(y_2\) минут.

Пример

Ввод Вывод
12
34
10
34
12
35
10 36
12
34
10
0
2
34
14 0

Тесты к этой задаче закрытые.

24: Турнир

В однокруговом турнире без ничьих участвовало N команд (каждая сыграла с каждой по одному матчу). Победителями считаются все команды, которые выиграли не меньше партий, чем остальные. Какое наибольшее количество победителей может быть в таком турнире?

Вводится одно натуральное число — количество команд.

Выведите одно число — наибольшее возможное количество победителей в таком турнире.

Пример

26: Детали

Имеется \(N\) кг металлического сплава. Из него изготавливают заготовки массой \(K\) кг каждая. После этого из каждой заготовки вытачиваются детали массой \(M\) кг каждая (из каждой заготовки вытачивают максимально возможное количество деталей). Если от заготовок после этого что-то остается, то этот материал возвращают к началу производственного цикла и сплавляют с тем, что осталось при изготовлении заготовок. Если того сплава, который получился, достаточно для изготовления хотя бы одной заготовки, то из него снова изготавливают заготовки, из них— детали и т.д.

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

Программа получает на вход три натуральных числа \(N\), \(K\), \(M\).

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

Пример

Ввод Вывод
10
5
2
4
13
5
3
3
14
5
3
4
13
9
4
2

Тесты к этой задаче закрытые.

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

Предполагаемое действие:

Представление результата в стандартном формате времени

Существует два способа представления результатов в стандартном формате времени (часы: минуты: секунды). Чтобы вычислить разницу во времени, используйте оператор вычитания (- ), а затем выполните указанные далее действия.

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

    1. Выделите ячейку.

      На вкладке Главная в группе Число щелкните стрелку рядом с полем Общий и выберите пункт Другие числовые форматы .

      В диалоговом окне Формат ячеек выберите в списке Числовые форматы пункт (все форматы) . Затем в поле Тип выберите нужный формат.

    Используйте функцию ТЕКСТ для форматирования значений времени.

При использовании кодов формата времени значение часов не должно превышать 24, а значения минут и секунд - 60.

Пример

Копирование примера

Время начала

Время завершения

09.06.2007 10:35

09.06.2007 15:30

Формула

Описание (результат)

Количество часов между двумя значениями времени (4). К ячейке нужно вручную применить пользовательский формат "ч".

Количество часов и минут между двумя значениями времени (4:55). К ячейке нужно вручную применить пользовательский формат "ч:мм".

Количество часов, минут и секунд между двумя значениями времени (4:55:00). К ячейке нужно вручную применить пользовательский формат "ч:мм:сс".

ТЕКСТ(B2-A2;"ч")

Количество часов между двумя значениями времени, если ячейка отформатирована как "ч" с помощью функции ТЕКСТ (4).

ТЕКСТ(B2-A2;"ч:мм")

Количество часов и минут между двумя значениями времени, если ячейка отформатирована как "ч:мм" с помощью функции ТЕКСТ (4:55).

ТЕКСТ(B2-A2;"ч:мм:сс")

Количество часов, минут и секунд между двумя значениями времени, если ячейка отформатирована как "ч:мм:сс" с помощью функции ТЕКСТ (4:55:00).

Примечание: Если к ячейке одновременно применить формат с помощью функции ТЕКСТ и числовой формат, то формат, примененный с помощью функции ТЕКСТ , будет иметь более высокий приоритет.

Дополнительные сведения об использовании этих функций см. в статьях Функция ТЕКСТ и Отображение чисел в виде даты или времени .

Представление результата в одной единице времени

Для выполнения этой задачи используются функции ЦЕЛОЕ или ЧАС , МИНУТЫ и СЕКУНДЫ , как показано в приведенном далее примере.

Пример

Чтобы этот пример проще было понять, скопируйте его на пустой лист.

Копирование примера

Скопировав пример на пустой лист, его можно настроить в соответствии с конкретными требованиями.

Время начала

Время завершения

09.06.2007 10:35

09.06.2007 15:30

Формула

Описание (результат)

ЦЕЛОЕ((B2-A2)*24)

Общее количество часов между двумя значениями времени (4)

Общее количество минут между двумя значениями времени (295)

Общее количество секунд между двумя значениями времени (17700)

Разница между двумя значениями времени в единице времени "часы". Это значение не может быть больше 24 (4).

МИНУТЫ(B2-A2)

Разница между двумя значениями времени в единице времени "минуты". Это значение не может быть больше 60 (55).

СЕКУНДЫ(B2-A2)

Разница между двумя значениями времени в единице времени "секунды". Это значение не может быть больше 60 (0).

Дополнительные сведения об использовании этих функций см. в следующих статьях:

На спут­ни­ке «Фотон» уста­нов­лен прибор, пред­на­зна­чен­ный для из­ме­ре­ния энер­гии кос­ми­че­ских лучей. Каж­дую ми­ну­ту при­бор передаёт по ка­на­лу связи не­от­ри­ца­тель­ное ве­ще­ствен­ное число - ко­ли­че­ство энергии, по­лу­чен­ной за по­след­нюю минуту, из­ме­рен­ное в услов­ных единицах. Временем, в те­че­ние ко­то­ро­го про­ис­хо­дит передача, можно пренебречь. Не­об­хо­ди­мо найти в за­дан­ной серии по­ка­за­ний при­бо­ра ми­ни­маль­ное про­из­ве­де­ние двух показаний, между мо­мен­та­ми пе­ре­да­чи ко­то­рых про­шло не менее 6 минут. Ко­ли­че­ство энергии, по­лу­ча­е­мое при­бо­ром за минуту, не пре­вы­ша­ет 1000 услов­ных единиц. Общее ко­ли­че­ство по­ка­за­ний при­бо­ра в серии не пре­вы­ша­ет 10 000. На­пи­ши­те на любом языке про­грам­ми­ро­ва­ния про­грам­му для ре­ше­ния по­став­лен­ной задачи.

Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы можете решать оба задания А и Б или одно из них по своему выбору.

Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов.

Задание Б является усложненным вариантом задания А, оно содержит дополнительные требования к программе. Перед программой укажите версию языка программирования.

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

Обязательно задания А .

Максимальная оценка за выполнение задания А – 2 балла.

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

Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Обязательно укажите, что программа является решением задания Б .

Перед про­грам­мой ука­жи­те вер­сию языка и крат­ко опи­ши­те ис­поль­зо­ван­ный алгоритм. В пер­вой стро­ке задаётся число N - общее ко­ли­че­ство по­ка­за­ний прибора. Гарантируется, что N > 6. В каж­дой из сле­ду­ю­щих N строк задаётся одно не­от­ри­ца­тель­ное ве­ще­ствен­ное число - оче­ред­ное по­ка­за­ние прибора.

Пример вход­ных данных:

Программа долж­на вы­ве­сти одно число - опи­сан­ное в усло­вии произведение.

Пример вы­ход­ных дан­ных для приведённого выше при­ме­ра вход­ных данных:

Пояснение.

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

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

Пример 1. При­мер пра­виль­ной про­грам­мы на ал­го­рит­ми­че­ском языке. Про­грам­ма эф­фек­тив­на и по времени, и по памяти.

вещ а | оче­ред­ное по­ка­за­ние прибора

вещтаб мини | те­ку­щие минимумы

| по­след­них 6 элементов

ввод мини

нц для i от 2 до s

мини := min(а, мини)

м:= 1.0 * 1000 * 1000 + 1

нц для i от s + 1 до N

м:= min(м, а * мини)

мини := min(а, мини)

Пример 2. При­мер пра­виль­ной про­грам­мы на ал­го­рит­ми­че­ском языке. Про­грам­ма эф­фек­тив­на и по времени, и по памяти.

цел s = 6 | тре­бу­е­мое рас­сто­я­ние между показаниями

вещтаб а | k-е вве­ден­ное число

| за­пи­сы­ва­ем в ячей­ку а

вещ а_ | оче­ред­ное по­ка­за­ние прибора

| Пролог. Ввод пер­вых шести чисел

нц для i от 1 до s

а := а_

| Ввод осталь­ных значений,

| поиск ми­ни­маль­но­го произведения

вещ мини = 1001 | ми­ни­маль­ное вве­ден­ное число

| (не счи­тая 6 последних)

вещ м | ми­ни­маль­ное зна­че­ние произведения

м:= 1.0 * 1000 * 1000 + 1

нц для i от s + 1 до N

мини:= min(мини, а)

м:= min(м, а_ * мини)

а := а_

Далее при­ве­де­ны ана­ло­гич­ные про­грам­мы на язы­ках Python и Паскаль. В ре­ше­нии на языке Python ис­поль­зу­ет­ся «зацикленный» спи­сок prev_min из s = 6 элементов, в ко­то­ром хра­нят­ся по­сле­до­ва­тель­ные ми­ни­му­мы счи­тан­ных чисел. Если про­грам­ма по­лу­ча­ет на вход по­сле­до­ва­тель­ность чисел a, a, … , a, то сна­ча­ла за­пол­ня­ют­ся эле­мен­ты спис­ка prev_min: a), … , prev_min = min(a, a, … , a). При этом до­пу­сти­мых пар эле­мен­тов (расстояние между ко­то­ры­ми не мень­ше s) нет, по­это­му зна­че­ние пе­ре­мен­ной result, в ко­то­рой хра­нит­ся ответ, не обновляется. Далее счи­ты­ва­ет­ся зна­че­ние эле­мен­та по­сле­до­ва­тель­но­сти a[s], рас­смат­ри­ва­ет­ся его про­из­ве­де­ние на prev_min = a, при не­об­хо­ди­мо­сти (если по­лу­чен­ное про­из­ве­де­ние мень­ше зна­че­ния result) об­нов­ля­ет­ся зна­че­ние result. После этого в эле­мент спис­ка prev_min за­пи­сы­ва­ет­ся ми­ни­мум из счи­тан­но­го числа a[s] и prev_min, тем самым prev_min ста­но­вит­ся рав­ным min(a, a, … , a[s]). Далее, на каж­дом шаге в пе­ре­мен­ную next_num счи­ты­ва­ет­ся оче­ред­ной эле­мент по­сле­до­ва­тель­но­сти a[i], он пе­ре­мно­жа­ет­ся с prev_min, в ко­то­ром в тот мо­мент хра­нит­ся min(a, a, … , a), при не­об­хо­ди­мо­сти об­нов­ля­ет­ся пе­ре­мен­ная result, и далее в ре­зуль­та­те вы­пол­не­ния при­сва­и­ва­ния prev_min = min(prev_min[(i - 1) % s], next_num) зна­че­ние prev_min ста­но­вит­ся равно min(a, a, … , a[i]). Это зна­че­ние prev_min будет затем ис­поль­зо­ва­но через s шагов вы­пол­не­ния внеш­не­го цикла, т.е. когда будет счи­тан эле­мент a. При этом все эле­мен­ты счи­тан­ной по­сле­до­ва­тель­но­сти не со­хра­ня­ют­ся в списке.

Пример 3. При­мер пра­виль­ной про­грам­мы на языке Python. Про­грам­ма эф­фек­тив­на и по времени, и по памяти

result = 1000 * 1000

N = int(input())

prev_min = float(input())

for i in range(1, s):

prev_min[i] = min(float(input()), prev_min)

for i in range(s, N):

next_num = float(input())

result = min(result, next_num * prev_min)

prev_min = min(prev_min[(i - 1) % s], next_num)

Пример 4. При­мер пра­виль­ной про­грам­мы на языке Паскаль.

Программа эф­фек­тив­на и по времени, и по памяти

В про­грам­ме на языке Паскаль, в от­ли­чие от про­грамм преды­ду­щих программ, на об­ра­бот­ку оче­ред­но­го числа тра­тит­ся время, про­пор­ци­о­наль­ное ве­ли­чи­не за­держ­ки (в дан­ной за­да­че – 6). Это ре­ше­ние менее эффективно, чем решения, при­ве­ден­ные выше. Од­на­ко по усло­вию за­да­чи оно также оце­ни­ва­ет­ся в 4 балла, так как время об­ра­бот­ки оче­ред­но­го числа не за­ви­сит от числа вве­ден­ных чисел.

const s = 6; {требуемое рас­сто­я­ние между показаниями}

a: array of real; {хранение по­ка­за­ний прибора}

{k-е вве­ден­ное число за­пи­сы­ва­ем в ячей­ку a}

a_: real; {ввод оче­ред­но­го показания}

mn: real; {минимальное вве­ден­ное число}

{не счи­тая 6 последних}

m: real; {минимальное зна­че­ние произведения}

{ Пролог. Ввод пер­вых шести чисел}

for i:=1 to s do

a := a_

{Ввод осталь­ных значений, поиск ми­ни­маль­но­го произведения}

mn:= 1001; m:= 1000 * 1000+1;

for i:= s + 1 to N do

if a if a_ * mn a := a_

С какой скоростью идет поезд или машина, какова скорость течения реки, чему равно расстояние между пунктами, не столкнутся ли два движущихся объекта? Такие вопросы часто возникают во время наших путешествий. Но вот ответы на них не всегда удается подобрать "на ходу". Мы предоставляем вам возможность в спокойной обстановке с карандашом и бумагой в руках потренироваться в решении задач подобного рода, чтобы впоследствии не испытывать затруднений в измерениях и вычислениях реальных скоростей, расстояний и промежутков времени.

При решении задач настоящего параграфа в реальных условиях вам понадобится освоить операцию измерения времени с помощью секундомера, имеющегося почти на любых часах. Полезным будет и умение измерять расстояния, скажем, шагами (см. задачу 10.1). В некоторых случаях вам поможет знание стандартных величин, таких как скорость звука, длина рельса и т. д.

Самое главное, без чего нельзя решить ни одну задачу на движение,- это понимание физического смысла движения. Мы будем молчаливо предполагать, что все объекты движутся прямолинейно и равномерно, если только в условии задачи специально не оговорено, что это не так. Важную роль будет играть идея сложения скоростей; например, скорость велосипедиста при движении против ветра будет складываться из собственной скорости велосипедиста и скорости ветра, взятой с отрицательным коэффициентом. Разумеется, такого рода предположения являются в известной степени приближенными (как, впрочем, и сами измерения), однако они позволяют хотя бы грубо оценить интересующую нас величину и исследовать ее зависимость от тех или иных параметров.

13.1. Далеко ли до молнии?

Если вы оказались во время грозы в незащищенном месте, то, наверняка, при каждом ударе грома будете испытывать известный трепет от сознания того, что где-то совсем ядом происходит грозное явление природы. Чтобы хоть немного успокоиться в описанных условиях, попробуйте определить расстояние до молнии следующим способом: сосчитайте, сколько секунд проходит между вспышкой молнии и соответствующим ударом грома; тогда, поделив полученное число секунд на 3, вы найдете искомое расстояние, выраженное в километрах. Насколько точен предложенный способ?

13.2. За рулем автомобиля

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

13.3. Скорость поезда

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

13.4. Средняя скорость

Автомобиль с грузом ехал из одного города в другой со скоростью 60 км / ч , а возвращался обратно порожняком со скоростью 100 км / ч . Какова средняя скорость автомобиля?

Не спешите с ответом: средняя скорость неравна 60+100 / 2 = 80 км / ч!

13.5. По тоннелю

Поезд длиной 1 км идет со скоростью 60 км / ч . Сосчитайте в уме, сколько времени понадобится поезду для прохождения тоннеля длиной 1 км .

13.6. Скорость и длина поезда

Вы засекли время, за которое поезд прошел мимо телеграфного столба, и время, в течение которого этот поезд проходил по мосту. Затем вы определили длину моста. Как по результатам ваших наблюдений определить скорость и длину поезда?

13.7. Высота горы

Из окна поезда, в котором вы едете, видна гора. Можете ли вы, зная скорость поезда (см. задачу 13.3), определить высоту этой горы?

13.8. На берегу реки

Каким образом можно измерить скорость течения реки?

13.9. По скоростям катеров

По реке в обоих направлениях ходят катера, имеющие одинаковую собственную скорость. Как в этих условиях определить скорость течения реки?

13.10. В поход на плоту

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

13.11. С ветром и без него

Велосипедист проезжает 1 км при попутном ветре за 3 минуты, а при движении против того же ветра - за 5 минут. За сколько минут он проезжает 1 км в безветренную погоду?

13.12. Длина горной дороги

На горной дороге, соединяющей два селения, нет горизонтальных участков пути. Автобус в гору всегда идет со скоростью 30 км / ч , с горы 60 км / ч , а на проезд туда и обратно он тратит в общей сложности 2 часа (не считая остановок). Найдите длину пути между этими двумя селениями.

13.13. Число видимых ступенек эскалатора в метро

Вбежав вверх по эскалатору, вы насчитали 30 ступенек, а затем, сбежав вниз по тому же эскалатору с той же скоростью относительно него, вы насчитали 150 ступенек. Сколько бы ступенек вы насчитали, пробежав в одну сторону по неподвижному эскалатору?

13.14. Число встречных пароходов

Пароход из порта А в порт В идет 10,5 суток. Ежедневно в полдень одним и тем же маршрутом как из порта А в порт В, так и из порта В в порт А отправляется по пароходу. Сколько пароходов встречает во время плаванья каждый из этих пароходов?

13.15. Сколько нужно поездов?

На железнодорожной линии, соединяющей пункты А и расположено несколько станций, причем на весь путь от A до В с учетом промежуточных остановок поезд затрачивает 2 часа 22 минуты. Какое наименьшее количество поездов необходимо иметь для обслуживания этой линии, чтобы с любой станции в любом направлении через каждые 20 минут отправлялся поезд?

13.16. Не произойдет ли столкновение?

На берегу большого круглого водоема расположены последовательно пристани A, В, С, D (рис. 44). От пристани А по направлению к пристани В отправился катер и одновременно с ним от пристани D по направлению к пристани С отправилась моторная лодка. Известно, что катер и лодка прибыли в пункты назначения также одновременно. На каком расстоянии друг от друга прошли бы катер и лодка, если бы они поменялись пунктами назначения?

13.17. Наименьшее расстояние

Два парохода движутся по морю взаимно перпендикулярными курсами к точке О их пересечения со скоростями 30 и 40 км / ч . В начальный момент расстояния от этих пароходов до точки О были равны 100 и 300 км соответственно. Найдите наименьшее расстояние между пароходами во время их движения.

13.18. По трем замерам

Расстояние между двумя кораблями, движущимися по морю, в 6.00 ч было равно 200 км, в 13.00 ч было 150 км , а в 17.00 ч было 130 км. Каково наименьшее расстояние между этими кораблями?

Решения


13.1. Принципиальная точность предложенного метода очень высока. В отличие от света, распространяющегося практически мгновенно, звук в воздухе движется со скоростью 330 м / с. Это означает, что за время, прошедшее с момента, когда раздался гром, звук прошел расстояние от молнии до наблюдателя. Так как за 3 секунды звук проходит расстояние 990 м , которое в описанных условиях вполне можно принять за 1 км, то число пройденных им километров втрое меньше числа сосчитанных секунд.

13.2. Если вы будете некоторое время ехать на постоянном расстоянии от впереди идущей машины, то ваш спидометр покажет скорость этой машины, совпадающую со скоростью вашего автомобиля.

13.3. Один из способов состоит в том, чтобы измерить время, за которое поезд проходит, скажем, 1 км, и вычислить скорость поезда, поделив расстояние на время и переведя результат в более привычные единицы км / ч. Например, если поезд прошел 1 км за 72 секунды, то его скорость равна

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

Другой способ основан на том, что, находясь в поезде, можно услышать стук колес поезда о стыки рельсов. Зная длину одного рельса, равную обычно 12,5 м, и сосчитав количество n ударов колес, скажем, за 1 мин , находим скорость поезда:

13.4. Заметим, что время, в течение которого автомобиль двигался со скоростью 60 км / ч , больше, чем время, в течение которого он двигался со скоростью 100 км / ч . Поэтому и "вклад" меньшей скорости в среднюю его скорость больше, чем "вклад" большей скорости, а значит, средняя скорость должна быть меньше 80 км / ч . Более точно, эта мысль подтверждается определением средней скорости как отношения пройденного расстояния к времени движения. Действительно, если обозначить расстояние между городами через st то средняя скорость будет равна

13.5. Так как скорость поезда равна 1 км / мин , то через одну минуту после начала вхождения в тоннель поезд окажется расположенным полностью в тоннеле, а еще через минуту он покинет тоннель. Итого для прохождения тоннеля поезду понадобится две минуты.

13.6. Пусть за время х поезд прошел мимо телеграфного столба и в течение времени у он проходил по мосту длины в. Заметим, что время у прохождения моста можно разбить на время х прохождения всего поезда мимо начальной точки этого моста и время y-х прохождения хвоста поезда по мосту длины s. Поэтому скорость поезда, совпадающая со скоростью его хвоста, равна Длина же поезда равна расстоянию, которое он проходит за время x, т. е.

13.7. Заметим, что вид горы в окне поезда можно сравнить с ее фотографией: если зафиксировать положение глаз относительно окна, то на стекле можно произвести необходимые замеры ничуть не менее эффективно, чем на фотографии. Применим метод, который был предложен для определения высоты памятника по снимку в решении задачи 10.4. Будем исходить из того, что пропорции на стекле более или менее соответствуют реальным пропорциям горы. Выберем две точки, расположенные примерно на одной горизонтали у основания горы, и вычислим отношение расстояния между этими точками к высоте горы по результатам измерений на стекле. Найдем реальное расстояние (точнее, его проекцию на прямую, вдоль которой идет железная дорога) между выбранными точками. Это можно сделать так: засечь время, в течение которого некоторая точка на стекле проходит (по мере движения поезда) путь от одной из выбранных точек до другой, а затем умножить это время на скорость поезда. Наконец, пользуясь вычисленной ранее пропорцией, подсчитаем и реальную высоту горы.

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

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

13.9. Выделим участок реки, имеющий известную длину s, и засечем время движения катера по этому участку в одном и в другом направлении - пусть это будут соответственно значения х и y, причем x . Тогда скорость катера по течению реки равна , против течения , а полу разность этих скоростей равна скорости течения. В самом деле, если u - собственная скорость катера, а v - скорость течения реки, то разность скоростей по течению u + v и против течения u - v равна u + v - u + v = 2v , т. е. удвоенной скорости течения.

13.10. Если обозначить через u и v скорости парохода (в стоячей воде) и течения реки соответственно, то расстояние между пристанями будет равно, с одной стороны, 3(u + v) , а с другой стороны, 4,5 (u - v) . Поэтому 3(u + v) = 4,5(u - v) , откуда u = 5v и s = 3*6v = 18v . Таким образом, плот проплывет это расстояние со скоростью v за 18 часов.

13.11. Скорость велосипедиста при попутном ветре, согласно условию задачи, равна - 1 / 3 км / мин, а при встречном ветре - 1 / 5 км / мин. Тогда собственная скорость велосипедиста равна полусумме двух указанных скоростей (см. решение задачи 13.9), а именно величине км / мин откуда получаем, что велосипедист в безветренную погоду проезжает 1 км за 3 минуты 45 секунд (но вовсе не за 4 минуты, как может показаться на первый взгляд!).

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

Отсюда получаем, что длина пути s 1 + s 2 между селениями равна 40 км.

13.13. Пусть эскалатор в неподвижном состоянии насчитывает х видимых ступенек. Обозначим через и нашу скорость, измеренную в таких необычных единицах, как ступеньки эскалатора в минуту, а через v скорость самого эскалатора в тех же единицах. Тогда, двигаясь в направлении движения эскалатора, вы находились на нем в течение минут, а двигаясь в обратном направлении,- в течение минут. Поэтому вы насчитали в первый раз ступенек, а во второй раз ступенек. Складывая равенства

получаем откуда

Таким образом, число видимых ступенек эскалатора в данном случае равно 50.

13.14. Данный пароход, вышедший из порта А, встретит во время плавания:

  • во-первых, 10 пароходов, которые ранее вышли из порта В и еще находятся в море;
  • во-вторых, тот пароход, который вышел из порта В одновременно с данным;
  • в-третьих, еще 10 пароходов, которые выйдут из порта В в последующие дни.

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

13.15. На весь путь из пункта А в пункт В и обратно один поезд затрачивает 4 часа 44 минуты, не считая стоянок на конечных пунктах A и В. За это время из начального пункта А должны отправиться еще 14 поездов, последний из которых должен выйти через 4 часа 40 минут после выхода первого поезда. Очередной поезд из пункта А должен отправиться через 5 часов после выхода первого поезда, и этот рейс может осуществить первый поезд, если он потратит на стоянки в пунктах А и В в общей сложности 16 минут. Таким образом, для обслуживания линии при данных условиях достаточно иметь 15 поездов, а меньшим числом поездов обойтись нельзя.

13.16. Пусть О - точка пересечения хорд АС и BD (рис. 44). Тогда треугольник АОВ подобен треугольнику DOC по двум углам: ∠AOB = ∠DOC (вертикальные углы) и ∠ ABD = ∠ ACD (вписанные углы, опирающиеся на одну дугу). Поэтому имеем равенство

в котором правая часть равна отношению скоростей катера и лодки. Следовательно, катер и лодка проходят расстояния АО и DO соответственно за одинаковое время. Таким образом, если бы они поменялись пунктами назначения, то оказались бы в точке О одновременно, т. е. попросту столкнулись бы.

13.17. Через t ч после начального момента первый корабль будет находиться от точки О на расстоянии |100 - 30t|км , а второй -на расстоянии |300 - 40t|км. По теореме Пифагора для прямоугольного треугольника с вершинами в точках расположения кораблей и в точке О имеем, что квадрат расстояния между кораблями будет равен

Анализ последнего выражения показывает, что наименьшее значение 100 2 оно принимает при t = 6 , следовательно, наименьшее расстояние между пароходами равно 100 км.

13.18. Рассмотрим движение одного корабля относительно другого и заметим, что оно является равномерным и прямолинейным, поскольку таковым является движение каждого из кораблей в отдельности. Таким образом, без ограничения общности можно считать, что один корабль покоится в некоторой точке A, а другой - точка В - движется по некоторой прямой линии со скоростью v (рис. 45). Опустим перпендикуляр АС на эту прямую и обозначим через а и b расстояния от кораблей до точки С в момент t = 6. Тогда в любой момент t эти расстояния будут равны а и |b - v(t - 6)|, а квадрат расстояния между кораблями будет равен

Подставляя последовательно значения t = 6, t = 13, t = 17, мы получим из условия задачи три уравнения:


Из них находим (вычитая первое уравнение из двух других)

откуда v = 1, b = 16 и а = 12, последнее значение как раз и задает наименьшее расстояние 12 км между кораблями.