Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Манхэттенские улицы

(Время: 1 сек. Память: 16 Мб Сложность: 17%)

В основе этой задачи лежит математическая задача для 3-го класса, которую сложно не решить. Здесь необходимо вычислить общую площадь фигуры, состоящей из (n+m) полосок длиной l и шириной d. Площадь асфальта для отдельной улицы или авеню равна l*d, а если бы улицы и авеню не пересекались, то общее значение составило бы (n+m)*l*d, но в случае пересечения мы в этой площади учитываем дважды n*m элементов пересечений, имеющих размер d*d, поэтому все эти значения следует отнять от исходной площади. В результате получим следующую формулу:

S = (n+m)∙d∙l - n∙m∙d∙d

Алгоритмическая реализация решения данной задачи тривиальна:

  read(n,m,d,l)
  write((n+m)*d*l-n*m*d*d)

Единственное, что следует учесть при решении задачи – это ограничения, описанные во входных данных, согласно которым общая площадь может быть близка к значению 1018, что не позволяет использовать 4-байтовый целый тип и вынуждает прибегать либо к 8-байтовым целым типам (int64 в Delphi и __int64 в Visual C++), либо к большим вещественным типам (например, к типу extended в Паскале).

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru



Изготовление каталога - подготовка макета многостраничного каталога.