8883. Прямоугольник

 

Заданы четыре натуральных числа a, b, c, d. Определите, можно ли составить прямоугольник со сторонами длины a, b, c, d. Если такой прямоугольник существует, выведите сумму всех четырёх чисел. В противном случае выведите No.

 

Вход. Четыре натуральных числа a, b, c, d, не превосходящих 109.

 

Выход. Если прямоугольник существует, выведите сумму всех чисел. В противном случае выведитеNo.

 

Пример входа 1

Пример выхода 1

7 4 4 7

22

 

 

Пример входа 2

Пример выхода 2

9 9 9 6

No

 

 

РЕШЕНИЕ

условный оператор

 

Анализ алгоритма

Прямоугольник можно составить только в том случае, если числа a, b, c, d можно разбить на попарно равные. Следует рассмотреть все возможные разбиения на пары, а именно:

·        a = b и c = d;

·        a = c и b = d;

·        a = d и b = c;

 

Задачу также можно решить с помощью сортировки. Пусть массив m содержит четыре заданных натуральных числа. Отсортируем массив. Из этих чисел можно составить прямоугольник тогда и только тогда, когда выполняется условие m[0] = m[1] и m[2] = m[3].

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%lld %lld %lld %lld", &a, &b, &c, &d);

 

Если прямоугольник существует, выводим его периметр.

 

if ((a == b && c == d) || (a == c && b == d) || (a == d && b == c))

  printf("%d\n", a + b + c + d);

 

Иначе выводим No”.

 

else

  printf("No\n");

 

Реализация алгоритма – сортировка

Объявим массив для хранения 4 входных чисел.

 

int m[4];

 

Читаем входные данные.

 

scanf("%d %d %d %d", &m[0], &m[1], &m[2], &m[3]);

 

Сортируем числа.

 

sort(m, m + 4);

 

Если прямоугольник существует, выводим его периметр.

 

if (m[0] == m[1] && m[2] == m[3])

  printf("%d\n", m[0] + m[1] + m[2] + m[3]);

 

Иначе выводим No”.

 

else

  printf("No\n");

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int a = con.nextInt();

    int b = con.nextInt();

    int c = con.nextInt();

    int d = con.nextInt();

   

    if ((a == b && c == d) || (a == c && b == d) ||

        (a == d && b == c))

      System.out.println(a + b + c + d);

    else

      System.out.println("No");

    con.close();

  }

}

 

Python реализация

Читаем входные данные.

 

a, b, c, d = map(int, input().split())

 

Если прямоугольник существует, выводим его периметр.

 

if (a == b and c == d) or (a == c and b == d) or (a == d and b == c):

  print(a + b + c + d)

 

Иначе выводим No”.

 

else:

  print("No")