Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Eлемент, равен на сумата на останалите

Eлемент, равен на сумата на останалите

Мнениеот Какаши Сенсей » 05 Ное 2021, 13:46

Да се напише програма, която въвежда n цели числа и проверява дали сред тях съществува число, което е равно на сумата на всички останали. Ако има такъв елемент, се отпечатва "Yes" + неговата стойност, в противен случай - "No" + разликата между най-големия елемент и сумата на останалите (по абсолютна стойност).


Вход Изход
7 Yes
3 Sum = 12
4
1
1
2
12
1
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28

Re: Eлемент, равен на сумата на останалите

Мнениеот Какаши Сенсей » 05 Ное 2021, 15:14

Успях да реша тази задача, но ще се радвам ако някой публикува друго по-добро решение.
Прикачени файлове
Екранна снимка 2021-11-05 151332.png
Екранна снимка 2021-11-05 151332.png (23.53 KiB) Прегледано 613 пъти
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28

Re: Eлемент, равен на сумата на останалите

Мнениеот Davids » 05 Ное 2021, 16:53

Една кратка реализация на С++:
Код: Избери целия код
#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int main()
{
    size_t n;
    cin >> n;

    int maxNumber = INT32_MIN, number;
    long sum = 0;

    for (size_t i = 0; i < n; ++i)
    {
        cin >> number;
        sum += number;
        maxNumber = max(maxNumber, number);
    }

    if (sum == 2 * maxNumber)
    {
        cout << "Yes, " << maxNumber;
    }
    else
    {
        cout << "No, " << abs(sum - maxNumber);
    }
   
    return 0;
}


Логиката ти е правилна, единствено може да се оптимизира, че за целите на задачата не е нужно да съхраняваме числата, които сме прочели, т.е. можем да се реши и с т.нар. "онлайн" алгоритъм. Правилно си съобразил иначе, че ако съществува търсеното число, то трябва да е най-голямото (иначе ако има по-голямо от него, сумата на останалите ще е по-голяма). Разбира се, това важи единствено при ограничението, че входовете са неотрицателни. Иначе от цикъла не можем да избягаме, но този вариант ще оставя на теб да разпишеш. Успех!
*Нещо непосредствено и интересно, привличащо вниманието на читателя и оставящо го с приятна топла усмивка на лицето.*
----
Вече не го правя само за точката. :lol:
Davids
Математик
 
Мнения: 2394
Регистриран на: 16 Ное 2015, 11:47
Рейтинг: 2552

Re: Eлемент, равен на сумата на останалите

Мнениеот Какаши Сенсей » 05 Ное 2021, 22:02

Здравейте! Да ви попитам, как мога да направя програма, която да отделя една двока числа. Например в редицата 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 има 5 двойки 1 и 2, 3 и 4 и т.н. Аз искам тези двойки числа да се съберат и да бъдат написани последователно. Например 1 + 2 = 3, 3 + 4 = 7 и т.н.
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28


Назад към PHP, Python и други езици за програмиране



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)
cron