Редакция для Площадь и периметр прямоугольника
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Автор:
Идея
Нужно по двум сторонам прямоугольника a и b вычислить две величины:
- площадь:
a * b; - периметр:
2 * (a + b).
После этого остаётся просто вывести их в нужном порядке: сначала площадь, потом периметр.
Наблюдения
- В задаче уже даны готовые формулы.
- Оба числа
aиbцелые, поэтому и результат тоже будет целым. - Ограничения маленькие, но даже при них удобно использовать тип, который точно вмещает результат.
- максимальная площадь:
10^4 * 10^4 = 10^8; - максимальный периметр:
2 * (10^4 + 10^4) = 40000.
- максимальная площадь:
- Никаких сложных структур данных или перебора не требуется — это простая арифметика.
Алгоритм
- Считать
aиb. - Вычислить
area = a * b. - Вычислить
perimeter = 2 * (a + b). - Вывести
areaиperimeterчерез пробел.
Почему это работает
По условию задачи:
- площадь прямоугольника равна произведению длины на ширину, то есть
a * b; - длина забора по краю прямоугольника — это его периметр, который равен
2 * (a + b).
Алгоритм напрямую использует эти определения, поэтому вычисляет именно те значения, которые требуется вывести.
Сложность
Алгоритм выполняет фиксированное число арифметических операций.
- Время:
O(1) - Память:
O(1)
Код на C++17
#include <iostream>
using namespace std;
int main() {
long long a, b;
cin >> a >> b;
long long area = a * b;
long long perimeter = 2 * (a + b);
cout << area << " " << perimeter;
return 0;
}
Код на Python 3
a, b = map(int, input().split())
area = a * b
perimeter = 2 * (a + b)
print(area, perimeter)
Комментарии