Олимпиады по информатике (ХМАО - Югра)

   
 
Югорский НИИ ИТ, Югорский ФМЛ
Логин:   Пароль:    
 
   
 
Новости
О проекте
Регистрация
Гостевая книга
Форум
Архив задач
Состояние системы
Олимпиады
Работа в системе
Рейтинг
Новичкам
Методическое пособие
Дистанционное обучение
Дистрибутивы
Ссылки

















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

(Время: 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 в Паскале).

[Все попытки] [Задача]


 
     
Югорский НИИ ИТ, Югорский ФМЛ