Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 09.03.2020
Сообщений: 6

Диофантово уравнение

13.09.2021, 21:10. Показов 3103. Ответов 5

Студворк — интернет-сервис помощи студентам
Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет наименьшее неотрицательное значение, и выведите это решение (два числа x и y через один пробел). Если решения не существует, то выведите −1.

Входные данные

Входные данные — натуральные числа a, b и c. Числа заданы на одной строке через пробел и не превышают 109.

Выходные данные

Выведите ответ на задачу.

Примеры
Ввод
1 2 3
2 2 2
Вывод
1 1
0 1

Вот мой код, перепробовал много способов, но либо неправильный ответ, либо TLE


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
gcd = lambda m,n: m if not n else gcd(n,m%n)
 
a, b, c = map(int, input().split())
nod = gcd(a, b)
 
if c % nod != 0:
    print(-1)
else:
    for x in range(c):
        for y in range(c - a*x):
            if a*x + b*y == c:
                print(x, y, sep=' ')
                break
Помогите пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2021, 21:10
Ответы с готовыми решениями:

Диофантово уравнение
Здравствуйте, пожалуйста помогите сделать мой код работающим верно. Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет...

Диофантово уравнение — 2
Диофантово уравнение — 2 Даны числа a,b,c,d,e. Подсчитайте количество таких целых чисел от 0 до 1000, которые являются корнями уравнения...

Диофантово уравнение
Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет...

5
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
14.09.2021, 00:03
TomikArtemik,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def gcd_extended(num1, num2):
    if num1 == 0:
        return (num2, 0, 1)
    else:
        div, x, y = gcd_extended(num2 % num1, num1)
    return (div, y - (num2 // num1) * x, x)
 
a, b, c = map(int, input().split())
d, x, y = gcd_extended(a,b)
 
if c % d == 0:
    k = c // d
    
    xi = x*k - (x*k) // b * b 
    if xi <= 0:
        xi += abs(b)
    yi = (c - xi*a) // b 
    
    print(xi, yi)
else:
    print(-1)
0
0 / 0 / 0
Регистрация: 09.03.2020
Сообщений: 6
14.09.2021, 00:50  [ТС]
нет, программа выдаёт неправильный ответ
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
14.09.2021, 06:34
Лучший ответ Сообщение было отмечено TomikArtemik как решение

Решение

TomikArtemik, Да - "х" неотрицательное, т.е. может и 0
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def gcd_ext(a, b):
    if b == 0:
        return a, 1, 0
    d, x, y = gcd_ext(b, a % b)
    x, y = y, x - (a//b) * y
    return d, x, y
 
 
a, b, c = map(int, input().split())
d, x, y = gcd_ext(a, b)
 
if c % d == 0:
    k = c//d
    t = k*x // (b//d)
    x = k*x - (b//d) * t
 
    if x < 0 :
        x = k*x + b//d
    y = (c - a*x) // b
    print(x, y)
else:
    print(-1)
1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
14.09.2021, 19:41
Лучший ответ Сообщение было отмечено TomikArtemik как решение

Решение

Линейное Диофантово уравнение

А чтобы снизить риск TLE, пошустрее будет:

Python
1
from math import gcd
1
0 / 0 / 0
Регистрация: 09.03.2020
Сообщений: 6
14.09.2021, 19:49  [ТС]
Спасибо огромное Gdez и enx!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2021, 19:49
Помогаю со студенческими работами здесь

Диофантово уравнение
Недавно начал изучать Python. Первый язык программирования (не считая Pascal). Встретилась задача: Даны натуральные числа a, b, c. Если...

Диофантово уравнение
Здравствуйте! Решаю следующую задачу: Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то...

Линейное Диофантово уравнение
Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет...

Диофантово уравнение
Входные данные Во входном файле заданы взаимно простые целые числа A и B(A&gt;=0;B=&lt;10^7). Выходные данные Выведите в выходной файл...

Диофантово уравнение
Здравствуйте дорогие форумчане и программисты!!! Я тут 1 раз и молю вас о помощи, а дело вот в чём, задали в инсте такую программку:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru