Sobes.tech
Назад к вопросам
Middle+
4

Дан массив A из N положительных чисел. Существуют ли три различных индекса i, j, k такие, что сумма A[i] + A[j] + A[k] заканчивается цифрой M?

Компании, где спрашивали
01.tech

Ответ от нейросети

sobes.tech AI

Задача: проверить, существуют ли три различных индекса i, j, k, такие что сумма A[i] + A[j] + A[k] заканчивается цифрой M.

Подход:

  1. Поскольку нас интересует только последняя цифра суммы, можно рассмотреть все элементы по модулю 10.
  2. Перебрать все тройки (i, j, k) и проверить, заканчивается ли сумма на M.

Пример решения на C#:

bool ExistsTripleWithSumEnding(int[] A, int M) {
    int n = A.Length;
    M = M % 10;
    for (int i = 0; i < n - 2; i++) {
        for (int j = i + 1; j < n - 1; j++) {
            for (int k = j + 1; k < n; k++) {
                int sumLastDigit = (A[i] + A[j] + A[k]) % 10;
                if (sumLastDigit == M) {
                    return true;
                }
            }
        }
    }
    return false;
}

Для оптимизации можно использовать частоты остатков по модулю 10 и проверять комбинации остатков, сумма которых по модулю 10 равна M, но базовый перебор подходит для небольших N.