Редакция для Площадь и периметр прямоугольника


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.

Автор: montes332

Идея

Нужно по двум сторонам прямоугольника a и b вычислить две величины:

  • площадь: a * b;
  • периметр: 2 * (a + b).

После этого остаётся просто вывести их в нужном порядке: сначала площадь, потом периметр.

Наблюдения

  1. В задаче уже даны готовые формулы.
  2. Оба числа a и b целые, поэтому и результат тоже будет целым.
  3. Ограничения маленькие, но даже при них удобно использовать тип, который точно вмещает результат.
    • максимальная площадь: 10^4 * 10^4 = 10^8;
    • максимальный периметр: 2 * (10^4 + 10^4) = 40000.
  4. Никаких сложных структур данных или перебора не требуется — это простая арифметика.

Алгоритм

  1. Считать a и b.
  2. Вычислить area = a * b.
  3. Вычислить perimeter = 2 * (a + b).
  4. Вывести 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)

Комментарии

Еще нет ни одного комментария.