Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/270: Рейтинг темы: голосов - 270, средняя оценка - 4.84
2 / 2 / 0
Регистрация: 10.03.2014
Сообщений: 16

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

11.03.2015, 20:24. Показов 56224. Ответов 10
Метки нет (Все метки)

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

Сложность алгоритма должна быть равна сложности алгоритма Евклида + константа.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2015, 20:24
Ответы с готовыми решениями:

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

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

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

10
0 / 0 / 1
Регистрация: 18.02.2015
Сообщений: 3
12.03.2015, 18:49
Есть такая штуковина, называется "Обобщенный алгоритм Евклида", который позволяет подобрать решение уравнения ax + by = НОД(a, b)
0
2 / 2 / 0
Регистрация: 10.03.2014
Сообщений: 16
12.03.2015, 20:02  [ТС]
Avi, я знаю. Но она не больно помогает в решении...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
13.03.2015, 15:56
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
 
def nod(m, n):
    return m if n == 0 else nod(n, m % n)
 
a = int(input("A = "))
b = int(input("B = "))
c = int(input("C = "))
 
assert c != 0
 
nodAB = nod(abs(a), abs(b))
if c % nodAB:
    print("Impossible")
else:
    a //= nodAB
    b //= nodAB
    c //= nodAB
 
    for k in range(abs(a)):
        if ( c - b * k ) % a == 0:
            y = k
            x = ( c - b * y ) // a
            print("X =", x, "Y =", y)
            break
    else:
        print("Shit happens!")
1
2 / 2 / 0
Регистрация: 10.03.2014
Сообщений: 16
13.03.2015, 18:25  [ТС]
easybudda , "то выберите то решение, в котором число x имеет наименьшее неотрицательное значение"
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
13.03.2015, 20:23
Цитата Сообщение от S E R Nag Посмотреть сообщение
выберите то решение, в котором число x имеет наименьшее неотрицательное значение
Ну выберите, кто против? Как уравнение решать, показал, а дальше сами как-нибудь...
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
13.03.2015, 20:52
Цитата Сообщение от easybudda Посмотреть сообщение
Ну выберите, кто против?
У нас задающие вопросы нынче очень требовательные пошли
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
13.03.2015, 23:47
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Да ладно, там надо-то 3 строчки добавить
вот так вот
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3
 
def nod(m, n):
    return m if n == 0 else nod(n, m % n)
 
a = int(input("A = "))
b = int(input("B = "))
c = int(input("C = "))
 
assert c != 0
 
nodAB = nod(abs(a), abs(b))
if c % nodAB:
    print("Impossible")
else:
    a //= nodAB
    b //= nodAB
    c //= nodAB
 
    for k in range(abs(a)):
        if ( c - b * k ) % a == 0:
            y = k
            x = ( c - b * y ) // a
            if x < 0:
                x += b
                y -= a
            print("X =", x, "Y =", y)
            break
    else:
        print("Shit happens!")
0
2 / 2 / 0
Регистрация: 10.03.2014
Сообщений: 16
14.03.2015, 20:04  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def gcd(a, b):
    while a != 0 and b != 0:
        if a < b:
            b = b % a
        else:
            a = a % b
    return a + b
 
 
def qwer(a, b): 
    x = 1 
    x1 = 0
    y = 0
    y1 = 1
    while b != 0:
        q = a // b
        r = a % b
        x2 = x - q * x1
        y2 = y - q * y1
        a, b = b, r
        x, x1 = x1, x2
        y, y1 = y1, y2
    return str(a), str(x), str(y)
    
 
a, b, c = list(map(int, input().split()))
x, y = 0, 0
gcds = 0
if c % gcd(a, b) != 0:
    print('Impossible')
else:
    gcds, x, y = map(int, qwer(a, b))
    x *= c // gcds
    y *= c // gcds
    q = x // (b // gcds)
    x %= b // gcds
    y += a // gcds * q
    print(x, y)
Да, спасибо! Взял за основу ваш старый код, вот что вышло... Но у вас, "чуточку" поменьше будет
1
0 / 0 / 0
Регистрация: 09.06.2020
Сообщений: 18
09.06.2020, 15:53
хотелось бы почитать пояснения к вашему коду)
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
09.06.2020, 16:39
Цитата Сообщение от alex925 Посмотреть сообщение
У нас задающие вопросы нынче очень требовательные пошли
Да просто на простые вопросы ответы уже все даны...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2020, 16:39
Помогаю со студенческими работами здесь

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

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

Линейное уравнение
Добрый день. Есть задача, которую нужно решить, используя условный оператор: Даны числа a и b. Решите в целых числах уравнение...

Линейное уравнение
Задана система уравнений: a**2+b=n a+b**2=m Нужно посчитать количество пар целых чисел (a, b) (0 ≤ a, b), которые...

Линейное уравнение ax = b
Заданы три точки A(x1y1), B(x2,y2), C(x3,y3). Определить какая из точек наиболее удалена от начала координат. a = float(input()) ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
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. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru