LINUX.ORG.RU

[алгоритмы] [диофантово уравнение] Помогите найти ошибку

 


0

1

Вот задача: http://www.e-olimp.com/problems/2697

Вот мое решение: http://pastebin.com/iiK5tz84

Вот описание алгоритма: http://e-maxx.ru/algo/diofant_2_equation

Решение набирает только 72% баллов (на четырех тестах runtime error и на трех wrong answer).

Помогите, пожалуйста, найти ошибку в моем решении.

Функция gcd реализует расширенный алгоритм Эвклида, diof_solve находит решение диофантового уравнения ax + by = c. Все остальное, думаю, очевидно.

Deleted

Спасибо, добавил в закладки

anonymous
()
Ответ на: комментарий от buddhist

По теме: на каких именно входных данных валится?

Если б я знал, этого треда не было бы. Они тестов не раскрывают. На всем, что я попробовал руками, оно дает правильный ответ. На 1000 сгенерированных рандомом тестах оно, как минимум, ни разу не падает.

Deleted
()
Ответ на: комментарий от buddhist

Там принцип таков, что я ищу kl - наименьший k, на котором x >= 0, и kh - наименьший k, на котором y >= 0. Выбираю из них наибольший - это будет такой k, с которым мы будем иметь наименьшие возможные неотрицательные решения диофантового уравнения. Сумма этих решений и будет ответом.

Deleted
()
Ответ на: комментарий от buddhist

Там принцип таков, что я ищу kl - наименьший k, на котором x >= 0, и kh - наименьший k, на котором y >= 0. Выбираю из них наибольший - это будет такой k, с которым мы будем иметь наименьшие возможные неотрицательные решения диофантового уравнения. Сумма найденных наименьших неотрицательных корней x и y и будет решением задачи.

Deleted
()
Ответ на: комментарий от buddhist

Во-первых, мне кажется, что вырожденные случаи тоже должны учитываться, когда а = 0 или b = 0 или даже оба.

buddhist ★★★★★
()
Ответ на: комментарий от buddhist

Пофиксил. Теперь Runtime Error нет. Осталось только 3 WA. Спасибо.

Deleted
()
Ответ на: комментарий от io

1 100 -1 1

-1 выдает. И это ведь правильный ответ: мы можем идти вверх на -1 (т.е., вниз на 1) и вниз на 1, т.е, вверх идти мы не можем.

Deleted
()
Ответ на: комментарий от Deleted

Надеюсь я в этот раз не перепутал направления :-(

6 - вверх 5 - вниз

$ ./xxx 1 5 6 5 19 - а не великовато ? $ 1-7-2-8-3-9-4-10-5

io ★★
()

О_о тред, в котором вообще ничего не понятно ) это вообще о чем?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от io

Спасибо! Ищу причину этой ошибки.

Deleted
()

Таки нашел еще одну ошибку. Исправил. Спасибо io и buddhist за помощь.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.