Back to questions
Middle+
5
Дан массив A из N положительных чисел. Существуют ли три различных индекса i, j, k такие, что сумма A[i] + A[j] + A[k] заканчивается цифрой M?
Companies where asked
01.tech
Answer from AI
sobes.tech AI
Задача: проверить, существуют ли три различных индекса i, j, k, такие что сумма A[i] + A[j] + A[k] заканчивается цифрой M.
Подход:
- Поскольку нас интересует только последняя цифра суммы, можно рассмотреть все элементы по модулю 10.
- Перебрать все тройки (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.