Вопрос задан 17.02.2025 в 11:40. Предмет Информатика. Спрашивает Минько Даниил.

Дан массив a из n целых чисел. Требуется определить, является ли сумма квадратов всех его элементов пятизначным числом.

Формат входных данных
На первой строке входного файла записано натуральное число n (n≤100) — число элементов в массиве. На следующей строке через пробел записаны целые числа ai (∣ai∣≤10^3) — элементы массива.
Формат выходных данных
Требуется вывести «YES», если сумма квадратов всех элементов массива является пятизначным числом, и «NO» в противном случае.
Примерывходные данные
3 100 -200 150

3 6 12 -10
выходные данные
"YES"

"NO" C++ HELP

Перейти к ответам

Ответы на вопрос

Отвечает Nikiforova Valeria.

Для решения задачи нужно подсчитать сумму квадратов всех элементов массива и проверить, является ли эта сумма пятизначным числом (т.е. числом от 10000 до 99999 включительно).

Пошаговое объяснение:

  1. Ввод данных:

    • В первой строке вводится число nn — количество элементов массива.
    • Во второй строке вводятся nn целых чисел a1,a2,...,ana_1, a_2, ..., a_n.
  2. Необходимая операция:

    • Нужно вычислить сумму квадратов всех элементов массива.
    • Для каждого элемента массива aia_i вычисляем квадрат, т.е. ai2a_i^2, и суммируем все квадраты.
  3. Проверка суммы:

    • После того как мы получим сумму всех квадратов, нужно проверить, попадает ли эта сумма в диапазон пятизначных чисел. То есть, она должна быть больше или равна 10000 и меньше или равна 99999.
  4. Вывод результата:

    • Если сумма квадратов — пятизначное число, выводим "YES".
    • Если нет, выводим "NO".

Алгоритм:

  1. Прочитаем входные данные.
  2. Посчитаем сумму квадратов элементов массива.
  3. Проверим, попадает ли эта сумма в диапазон пятизначных чисел.
  4. Выведем результат.

Пример:

Для входных данных:

3 100 -200 150

Шаги:

  • Сначала квадратируем элементы: 1002=10000100^2 = 10000, (200)2=40000(-200)^2 = 40000, 1502=22500150^2 = 22500.
  • Суммируем: 10000+40000+22500=7250010000 + 40000 + 22500 = 72500.
  • 72500 — пятизначное число, поэтому выводим "YES".

Для входных данных:

3 6 12 -10

Шаги:

  • Квадраты элементов: 62=366^2 = 36, 122=14412^2 = 144, (10)2=100(-10)^2 = 100.
  • Суммируем: 36+144+100=28036 + 144 + 100 = 280.
  • 280 — не пятизначное число, поэтому выводим "NO".

Реализация на C++:

cpp
#include #include using namespace std;

int main() { int n; cin >> n; vector<int> a(n); int sum_of_squares = 0;

for (int i = 0; i < n; ++i) { cin >> a[i]; sum_of_squares += a[i] * a[i]; // добавляем квадрат элемента в сумму }

// Проверка, является ли сумма квадратов пятизначным числом if (sum_of_squares >= 10000 && sum_of_squares <= 99999) { cout << "YES" << endl; } else { cout << "NO" << endl; }

return 0; }

Пояснение к коду:

  1. Ввод данных:
    • Мы сначала считываем количество элементов массива nn.
    • Затем считываем сами элементы массива в вектор aa.
  2. Вычисление суммы квадратов:
    • Используем цикл для обхода элементов массива и добавляем квадрат каждого элемента в переменную sum_of_squares.
  3. Проверка диапазона:
    • Если сумма квадратов лежит в пределах от 10000 до 99999, выводим "YES", иначе — "NO".

Важные моменты:

  • Массив может содержать как положительные, так и отрицательные числа, но квадраты этих чисел всегда будут положительными, так что отрицательные числа не требуют особой обработки.
  • Убедитесь, что диапазон суммы квадратов элементов не выходит за пределы возможных значений для стандартных целых чисел, однако в рамках ограничений задачи это не вызовет проблем.

Этот алгоритм работает за O(n)O(n), что достаточно эффективно при n100n \leq 100.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос