Информатика

7 829 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.

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

\[\frac{\Delta F}{F} = \left(\frac{R_p}{R_\star}\right)^{2} \qquad\Longrightarrow\qquad R_p = R_\star\sqrt{\frac{\Delta F}{F}}\]

Радиус звезды \(R_\star\) задан в радиусах Солнца, где \(R_\odot = 6{,}957 \cdot 10^{8}\) м. Вычислить радиус планеты в радиусах Юпитера, где \(R_{\mathrm{J}} = 7{,}1492 \cdot 10^{7}\) м.

Проверьте порядок величины: для глубины около одного процента и звезды солнечного радиуса должна получиться планета размером примерно с Юпитер.

Ввод. Два вещественных числа, каждое на своей строке: \(R_\star\) в радиусах Солнца и глубина транзита \(\Delta F/F\), где \(0 \lt R_\star \le 1000\) и \(0 \lt \Delta F/F \le 1\).

Вывод. Радиус планеты в радиусах Юпитера с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Видимая звёздная величина \(m\) и абсолютная звёздная величина \(M\) связаны с расстоянием до звезды соотношением

\[m - M = 5\lg d - 5\]

где \(d\) выражено в парсеках. Отсюда

\[d = 10^{\,(m - M + 5)/5}\]

Вычислить расстояние до звезды в парсеках.

Здесь возведение в степень с дробным показателем: в Python это оператор **. Проверьте себя определением абсолютной звёздной величины: если \(m = M\), расстояние равно ровно 10 парсекам.

Ввод. Два вещественных числа, каждое на своей строке: \(m\) и \(M\), где \(-30 \le m \le 30\) и \(-30 \le M \le 30\).

Вывод. Расстояние в парсеках с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Тело обращается вокруг центрального тела массой \(M\) по орбите с большой полуосью \(a\). Период обращения

\[T = 2\pi\sqrt{\frac{a^{3}}{GM}}\]

где \(G = 6{,}67430 \cdot 10^{-11}\) м³·кг⁻¹·с⁻².

Вычислить период обращения в сутках (1 сутки = 86400 с).

Проверьте себя: для орбиты Земли, где \(a = 1{,}496 \cdot 10^{11}\) м и \(M = 1{,}989 \cdot 10^{30}\) кг, должно получиться около 365 суток.

Ввод. Два вещественных числа, каждое на своей строке: \(a\) в метрах и \(M\) в килограммах.

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

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Тело брошено с поверхности земли со скоростью \(v\) под углом \(\alpha\) к горизонту. Сопротивление воздуха не учитывается. Дальность полёта

\[L = \frac{v^{2}\,\sin 2\alpha}{g}\]

Вычислить дальность.

Угол задан в градусах, а тригонометрические функции принимают радианы: переведите угол функцией math.radians. Учтите, что \(\sin 2\alpha \ne 2\sin\alpha\).

Проверьте себя предельными случаями: при \(\alpha = 0\) и при \(\alpha = 90^\circ\) дальность обращается в ноль, а максимум достигается при \(\alpha = 45^\circ\).

Ввод. Три вещественных числа, каждое на своей строке: \(v\) в м/с, \(\alpha\) в градусах и \(g\) в м/с², где \(0 \le v \le 10^4\), \(0 \le \alpha \le 90\), \(0 \lt g \le 100\).

Вывод. Дальность полёта в метрах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Три резистора соединены параллельно. Их общее сопротивление находится из

\[\frac{1}{R} = \frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}\]

Вычислить \(R\).

Ввод. Три вещественных числа, каждое на своей строке: \(R_1\), \(R_2\), \(R_3\) в омах, где \(0 \lt R_i \le 10^6\).

Вывод. Общее сопротивление в омах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Период малых колебаний математического маятника длиной \(L\) при ускорении свободного падения \(g\) равен

\[T = 2\pi\sqrt{\frac{L}{g}}\]

Вычислить период.

 

Ввод. Два вещественных числа, каждое на своей строке: \(L\) в метрах и \(g\) в м/с², где \(0 \lt L \le 10^6\), \(0 \lt g \le 100\).

Вывод. Период в секундах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Палитра изображения содержит \(N\) различных оттенков. Определить наименьшее целое число бит, которого достаточно для кодирования номера оттенка, то есть наименьшее \(i\), при котором

\[2^i \ge N\]

Напрашивается решение math.ceil(math.log2(N)). Оно работает не всегда: логарифм вычисляется приближённо, и на больших \(N\) результат может отличаться от истинного на единицу. Проверьте своё решение на \(N = 2^{50}\) и \(N = 2^{50} + 1\).

Точный ответ даёт (N - 1).bit_length(): метод возвращает число значащих двоичных разрядов, а у числа \(N - 1\) их ровно столько, сколько бит нужно для \(N\) значений.

Ввод. Одно целое число \(N\), где \(1 \le N \le 10^{18}\).

Вывод. Одно целое число — количество бит.

Производится звукозапись с частотой дискретизации f Гц и глубиной кодирования b бит на отсчёт. Запись ведётся по c каналам. Определить, сколько целых секунд записи поместится в память объёмом V байт.

Чтобы не терять точность, переведите объём памяти в биты.

Ввод. Четыре целых числа, каждое на своей строке: \(f\), \(b\), \(c\) и \(V\), где \(1 \le f \le 10^6\), \(1 \le b \le 64\), \(1 \le c \le 8\), \(1 \le V \le 10^{15}\).

Вывод. Одно целое число — количество целых секунд.

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

Определить объём памяти, необходимый для хранения сведений о P пользователях.

Округлять вверх придётся дважды и на разных уровнях: сначала — число бит на один символ, затем — число байт на одно имя. Типичная ошибка состоит в том, чтобы округлить итоговый объём вместо объёма одной записи; проверьте себя на примере.

Число бит на символ — наименьшее \(i\), при котором \(2^i \ge M\). Его можно получить без цикла: (M - 1).bit_length().

Ввод. Четыре целых числа, каждое на своей строке: \(N\), \(M\), \(K\) и \(P\), где \(1 \le N \le 1000\), \(1 \le M \le 10^6\), \(0 \le K \le 1000\), \(1 \le P \le 10^6\).

Вывод. Одно целое число — объём памяти в байтах.

Числовая ось разбита на ячейки шагом \(h\), начиная от нуля: ячейка с номером \(k\) занимает промежуток \(\bigl[\,k h,\ (k+1)h\,\bigr)\). Для координаты \(x\) определить номер ячейки, в которую она попадает, — двумя способами: как x // h и как int(x / h).

Координата может быть отрицательной. Найдите такие x, при которых два способа дают разные ответы, и объясните, какой из них верен.

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

Ввод. Два целых числа, каждое на своей строке: \(x\) и \(h\), где \(-10^6 \le x \le 10^6\), \(1 \le h \le 10^6\).

Вывод. Два целых числа через пробел: результат x // h и результат int(x / h).

Поделиться
Класснуть