|
Манхэттенские улицы
(Время: 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 в Паскале).
| |