Найти в Дзене
Романов учит

Разбор всех задач с kompege.ru Ч.22

Деду Морозу в декабре 2022г выдали на флешке информацию о всех жителях Земли (для упрощения, ровно 8 млрд жителей). Каждая запись содержит четыре поля: широта (±180°), долгота (±90°), дата и время рождения в секундах от начала ХХ века и закодированное имя. Широта и долгота были указаны с точностью до секунды (1/3600 градуса). Все поля записываются как двоичные числа целым количеством байт. Сколько байт остается на закодированное имя, если известно, что на флешке все данные заняли ровно 240ГБ (ГБ = 109 байт, по данным производителей SSD/HDD) Решение: Пояснение кода: 1. Широта и долгота: 2. Временной период: 3. Размер имени: Аналитически: 1. Расчёт размера полей (в байтах) 1.1. Широта (±180° с точностью до секунды) 180×3600×2=1 296 000  (включая отрицательные значения). log⁡2(1 296 000)=21 бит. 21/8=3 байта. 1.2. Долгота (±90° с точностью до секунды) 90×3600×2=648 000. log⁡2(648 000)⌉=20 бит. 20/8=3 байта. 1.3. Дата и время рождения (в секундах от 1 января 1901 года до 31 декабря 2022 го
Оглавление

№ 5876 Danov2301 (Уровень: Сложный)

Деду Морозу в декабре 2022г выдали на флешке информацию о всех жителях Земли (для упрощения, ровно 8 млрд жителей). Каждая запись содержит четыре поля: широта (±180°), долгота (±90°), дата и время рождения в секундах от начала ХХ века и закодированное имя. Широта и долгота были указаны с точностью до секунды (1/3600 градуса). Все поля записываются как двоичные числа целым количеством байт. Сколько байт остается на закодированное имя, если известно, что на флешке все данные заняли ровно 240ГБ (ГБ = 109 байт, по данным производителей SSD/HDD)

Решение:

-2

Пояснение кода:

1. Широта и долгота:

  • Рассчитываем диапазон значений с точностью до секунды
  • Определяем минимальное количество бит и байт

2. Временной период:

  • Используем модуль datetime для точного расчёта секунд между 1901-01-01 и 2022-12-31
  • Получаем 3,850,944,000 секунд (122 года + 30 високосных дней)

3. Размер имени:

  • Вычисляем фиксированную часть (широта + долгота + время) = 10 байт
  • Общий размер записи = 240 ГБ / 8 млрд записей = 30 байт
  • На имя остаётся 30 - 10 = 20 байт

Аналитически:

1. Расчёт размера полей (в байтах)

1.1. Широта (±180° с точностью до секунды)

  • Диапазон: от −180° до +180°.
  • Точность: 1 секунда = 1/3600 градуса.
  • Количество возможных значений:

180×3600×2=1 296 000  (включая отрицательные значения).

  • Минимальное количество бит для хранения:

log⁡2(1 296 000)=21 бит.

  • Минимальное количество байт:

21/8=3 байта.

1.2. Долгота (±90° с точностью до секунды)

  • Диапазон: от −90° до +90°.
  • Точность: 1 секунда = 1/3600 градуса.
  • Количество возможных значений:

90×3600×2=648 000.

  • Минимальное количество бит:

log⁡2(648 000)⌉=20 бит.

  • Минимальное количество байт:

20/8=3 байта.

1.3. Дата и время рождения (в секундах от 1 января 1901 года до 31 декабря 2022 года включительно)

  • Период: 1 января 1901 года – 31 декабря 2022 года = 122 года.
  • Количество високосных лет:
    Високосные года: 1904, 1908, ..., 2020 (каждый 4-й год).
    Исключения: 1900 год не високосный (не входит в диапазон), 2000 — високосный.
  • Всего високосных лет: (2020−19044)/4 + 1=30 лет.
  • Общее количество дней:

122×365+30=44 560 дней.

  • Количество секунд:
  • 44 560×24×3600=3 850 944 000 секунд.
  • Битовое представление:

log⁡2(3 850 944 000)=32 бита(2^32=4 294 967 296≥3 850 944 000).

  • Байтовое представление:

32/8=4 байта.

1.4. Закодированное имя

  • Размер неизвестен, обозначим его как x байт.

2. Общий размер одной записи

3 (широта)+3 (долгота)+4 (время)+x (имя)=10+x байт.

3. Общий объём данных

8×10^9×(10+x)=240×10^9.

Решим уравнение:

10+x=240/8=30, x=20.

Ответ

На закодированное имя остаётся 20 байт.

Проверка:

  • Размер одной записи: 3+3+4+20=30 байт.
  • Общий объём: 8×10^9×30=240×10^9 байт= 240 ГБ (условие выполнено).

Если у вас остались вопросы, хотите разобраться, хотите подготовиться к ЕГЭ/ОГЭ по информатике или изучить программирование на языке Python - добро пожаловать на пробный урок в телеграм t.me/MikhailRomanov

Не забывайте подписываться на канал! Таким образом вы помогаете выходу новых разборов!

А также ставьте лайк, пишите комментарии.
ЖМИ НА ССЫЛКУ СНИЗУ ДЛЯ НАВИГАЦИИ ПО РЕШЕНИЯМ
Тут все разборы собраны воедино