Заданы четыре натуральных числа 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")