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

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

11.03.2015, 20:24. Показов 55937. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru