Форум » Обработка числовых последовательностей » Задача 27 № 134 » Ответить

Задача 27 № 134

Александра1571: Все приведенные решения на 4 балла дают неверный ответ, например, для 6 чисел: 3, 5, 7, 12, 13, 200. Ответ NO, хотя правильный ответ - пара 3, 13. Для числа 200 переменная max13 будет еще равна нулю, а сумма - самая большая. Для чисел, не кратных 13, при вычислении суммы нужна дополнительная проверка max13 != 0

Ответов - 2 новых

cabanov.alexey: В самом деле. Решение поправил, изменения выделил жирным шрифтом. [pre2] #include <iostream> using namespace std; int main() { const int k = 13; int n; int a[5]; int maxl = 0; int maxlk = 0; int l = 0; int r = 0; cin >> n; for (int i = 0; i < 4; i++) cin >> a[ i ]; for (int i = 0; i < n - 4; i++) { if (a[0] % k == 0 && a[0] > maxlk) maxlk = a[0]; if (a[0] % k != 0 && a[0] > maxl) maxl = a[0]; cin >> a[4]; if (a[4] % k == 0) { if (maxlk != 0 && a[4] + maxlk > l + r) { l = maxlk; r = a[4]; } if (maxl != 0 && a[4] + maxl > l + r) { l = maxl; r = a[4]; } } else { if (maxlk != 0 && a[4] + maxlk > l + r) { l = maxlk; r = a[4]; } } a[0] = a[1]; a[1] = a[2]; a[2] = a[3]; a[3] = a[4]; } if (l > 0 && r > 0) cout << l << " " << r << endl; else cout << "NO" << endl; return 0; }[/pre2]

Александра1571: Спасибо!



полная версия страницы