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

Задача 27 № 2691

BSL: На мой взгляд, в файле A приведенный ответ 15148 неверный. Правильный ответ - 15142. Поправьте меня, если я ошибаюсь. Программа приведена ниже. Ответы на файл B совпадают.[pre2] #include <iostream> #include <fstream> #include <cmath> using namespace std; int main() { int x, y, z, s = 0, i, n, min_razn = 1000000; ifstream fin; fin.open("27_A.txt"); fin >> n; for (i = 0; i < n; i++) {fin >> x >> y >> z; s = s + x + y + z - max(x, max(y, z)); if (abs(x - y) % 9 > 0) min_razn = min(min_razn, abs(x-y)); if (abs(x - z) % 9 > 0) min_razn = min(min_razn, abs(x-z)); if (abs(z - y) % 9 > 0) min_razn = min(min_razn, abs(z-y)); } if(s % 9 == 0) s += min_razn; cout << s; return 0; }[/pre2]

Ответов - 4

Поляков: BSL пишет: [pre2] if (abs(x - y) % 9 > 0) min_razn = min(min_razn, abs(x-y)); if (abs(x - z) % 9 > 0) min_razn = min(min_razn, abs(x-z)); if (abs(z - y) % 9 > 0) min_razn = min(min_razn, abs(z-y));[/pre2]Странная логика в этом блоке. Ведь вы ранее взяли из трёх только два числа. Одно число не попало. Вы это никак не учитываете.

BSL: Да, спасибо, я поняла. Нужно проверить, не является ли пара с минимальной разностью двумя минимальными числами в тройке, которые уже вошли в сумму.

check8386: Проверка ответа для файла А в Excel (ответ для файла В совпадает). Сумма минимальных чисел строк равна 6245 (ост. 5). Ответ 6383 будет получен при величине коррекции 138. Для файла А составляем упорядоченную последовательность разностей макс - мин: [pre2]макс-мин остаток 17 1 62 14 104 8 116 4 136 8 . . . [/pre2] Величина коррекции 138 может быть получена, если дважды взять строку с разностью 17 (что недопустимо) и строку с разностью 104. Прошу подсказать, где у меня ошибка.


Поляков: check8386 пишет: Прошу подсказать, где у меня ошибка. У вас ошибки нет, ошибка в ответе. Спасибо, ответ исправлен.



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