Почему WA: шесть причин неверного ответа и как найти свою
WA (Wrong Answer) означает ровно одно: программа запустилась, доработала до конца и напечатала не то, что ожидал судья. Ни времени, ни падения тут нет — значит ошибка в логике или в том, КАК напечатан ответ. Проверять причины дешевле в том порядке, в котором они встречаются.
Проверить это на живой задаче — «Делим яблоки»: в ней неверный ответ обычно приходит не от алгоритма, а от края: ноль, единица и точное деление без остатка. Условие, окно для кода и запуск на тестах — на одной странице.
Шесть причин по частоте
Лишнее в выводе
Судья сравнивает вывод посимвольно, поэтому «Ответ: 42» вместо «42» — уже неверный ответ. Приглашения вида input('Введите число: ') печатаются в тот же поток и ломают проверку: в олимпиадной задаче ввод читается молча.
Краевые случаи
Ноль, единица, все элементы одинаковые, пустая строка, отрицательное число, самый большой допустимый размер. Условие почти всегда называет границы явно — стоит прогнать решение на каждой из них руками, прежде чем отправлять.
Прочитано не то, что просили
Спрашивают количество, а программа печатает сами значения; спрашивают индекс с единицы, а программа считает с нуля. Самая частая причина неверного ответа у тех, кто уже умеет программировать.
Целые числа и дробные
Деление / в Python всегда даёт дробное число, поэтому 10 / 2 напечатается как 5.0. Там, где нужен целый ответ, используется //, а округление делается тем способом, который назван в условии.
Формат вещественного ответа
Если условие требует шесть знаков после запятой, печатать надо ровно столько: print(f'{x:.6f}'). Вывод по умолчанию даёт другое число знаков и не совпадает.
Несколько наборов данных
Когда во входе несколько тестов подряд, ответ нужен на каждый, а состояние между ними — сброшено. Забытый счётчик из прошлого набора даёт верный первый ответ и неверные остальные.
Порядок проверки, когда причина неизвестна
- Скопировать пример из условия и сверить свой вывод с ожидаемым посимвольно.
- Прогнать края: ноль, единица, максимум из условия.
- Перечитать вопрос условия вслух — что именно просят напечатать.
- Проверить тип ответа: целое или дробное, и сколько знаков.
- Если наборов несколько — сбросить состояние между ними.
| Лишнее в выводе | Судья сравнивает вывод посимвольно, поэтому «Ответ: 42» вместо «42» — уже неверный ответ. Приглашения вида input('Введите число: ') печатаются в тот же поток и ломают проверку: в олимпиадной задаче ввод читается молча. |
|---|---|
| Краевые случаи | Ноль, единица, все элементы одинаковые, пустая строка, отрицательное число, самый большой допустимый размер. Условие почти всегда называет границы явно — стоит прогнать решение на каждой из них руками, прежде чем отправлять. |
| Прочитано не то, что просили | Спрашивают количество, а программа печатает сами значения; спрашивают индекс с единицы, а программа считает с нуля. Самая частая причина неверного ответа у тех, кто уже умеет программировать. |
| Целые числа и дробные | Деление / в Python всегда даёт дробное число, поэтому 10 / 2 напечатается как 5.0. Там, где нужен целый ответ, используется //, а округление делается тем способом, который назван в условии. |
| Формат вещественного ответа | Если условие требует шесть знаков после запятой, печатать надо ровно столько: print(f'{x:.6f}'). Вывод по умолчанию даёт другое число знаков и не совпадает. |
| Несколько наборов данных | Когда во входе несколько тестов подряд, ответ нужен на каждый, а состояние между ними — сброшено. Забытый счётчик из прошлого набора даёт верный первый ответ и неверные остальные. |
Частые вопросы
Чем WA отличается от TLE?
WA — программа успела и ответила неверно. TLE — программа не успела ответить вовсе; её ответ мог быть и правильным.
WA только на одном тесте — это тоже неверное решение?
Да. Засчитывается решение, прошедшее все тесты; один провал обычно означает необработанный краевой случай, а не случайность.
Может ли WA прийти из-за лишнего пробела?
Да, если судья сравнивает строго. У части судей такой случай выделен в отдельный вердикт PE, у части — попадает в WA.
Рядом
почему TLE — не уложился во время, что значат вердикты судьи. Разобрать приём целиком — каталог задач с разбором; маршрут с нуля — «С нуля до олимпиады».