• На с++ с тернарной операцией
    Даны три целых числа. Требуется определить, превосходит ли максимум этих чисел удвоенную сумму двух других или нет.

    Формат входных данных
    С клавиатуры вводятся три целых числа через пробел, не превосходящие по модулю 105.
    Формат выходных данных
    Выведите «YES», если максимум превосходит удвоенную сумму двух других чисел, и «NO» в противном случае.

    Примечания
    Если максимальный элемент равен удвоенной сумме, то требуется вывести также YES
    Примеры
    входные данные выходные данные
    3 5 1
    NO
    3 4 14
    YES

Ответы 1

  • Алгоритм решения

    Предположим, что первое введённое число - максимальное. Тогда в ans мы будем хранить 1, если первое число не меньше удвоенной суммы второго и третьего, и 0, если меньше.

    Проверим - если второе число больше первого, мы запомним, что максимальное число у нас второе и пересчитаем ответ: 1, если второе число не меньше удвоенной суммы первого и третьего, 0 иначе.

    Точно так же проверим третье число: если оно больше нашего максимального, обновим его и ответ.

    После этого мы выведем "YES", если в ans хранится 1, "NO" иначе.

    Код

    #include <bits/stdc++.h>

    using namespace std;

    int main() {

       int a, b, c;

       cin >> a >> b >> c;

       int mx = a;

       int ans = (a >= (b + c) * 2 ? 1 : 0);

       if (b > mx) {

           mx = b;

           ans = (b >= (a + c) * 2 ? 1 : 0);

       }

       if (c > mx) {

           mx = c;

           ans = (c >= (a + b) * 2 ? 1 : 0);

       }

       cout << (ans == 1 ? "YES" : "NO") << endl;

       return 0;

    }

    Другие варианты1) int + тернарный оператор -> bool

    #include <bits/stdc++.h>

    using namespace std;

    int main() {

       int a, b, c;

       cin >> a >> b >> c;

       int mx = a;

       bool ans = (a >= (b + c) * 2);

       if (b > mx) {

           mx = b;

           ans = (b >= (a + c) * 2);

       }

       if (c > mx) {

           mx = c;

           ans = (c >= (a + b) * 2);

       }

       cout << (ans ? "YES" : "NO") << endl;

       return 0;

    }

    2) string ans

    #include <bits/stdc++.h>

    using namespace std;

    int main() {

       int a, b, c;

       cin >> a >> b >> c;

       int mx = a;

       string ans = (a >= (b + c) * 2 ? "YES" : "NO");

       if (b > mx) {

           mx = b;

           ans = (b >= (a + c) * 2 ? "YES" : "NO");

       }

       if (c > mx) {

           mx = c;

           ans = (c >= (a + b) * 2 ? "YES" : "NO");

       }

       cout << ans << endl;

       return 0;

    }

    • Автор:

      buttons
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years