Middle+
Există trei indici diferiți i, j, k într-un array A de N numere pozitive, astfel încât suma A[i] + A[j] + A[k] să se termine cu cifra M?
sobes.tech AI
Răspuns de la 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.