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

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

11.03.2015, 20:24. Показов 56300. Ответов 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,977
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,977
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,977
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
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru