С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/47: Рейтинг темы: голосов - 47, средняя оценка - 4.70
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29

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

14.05.2019, 17:30. Показов 9374. Ответов 11

Студворк — интернет-сервис помощи студентам
Недавно начал изучать Python. Первый язык программирования (не считая Pascal). Встретилась задача:
Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет наименьшее неотрицательное значение и выведите это решение (два числа x и y через один пробел). Если решения не существует, то выведите слово Impossible.
Написал с помощью интернета такую программу:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import sys
 
 
def gcd(z, v):
    while z != 0 and v != 0:
        if z < v:
            v = v % z
        else:
            l = z % v
    return z + v
 
 
def qwer(z, v):
    x = 1
    x1 = 0
    y = 0
    y1 = 1
    while v != 0:
        q = z // v
        r = z % v
        x2 = x - q * x1
        y2 = y - q * y1
        l, v = v, r
        x, x1 = x1, x2
        y, y1 = y1, y2
    return str(z), str(x), str(y)
 
 
a = int(input())
b = int(input())
c = int(input())
if a == b == 0:
    if c == 0:
        print(0,0)
        sys.exit()
    else:
        print('Impossible')
        sys.exit()
if a == 0:
    print(c // b, 0)
    sys.exit()
if b == 0:
    print(c // a,0)
    sys.exit()
 
if c == 0:
    print(0,0)
    sys.exit()
 
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)
И у меня в PyCharm всё работает. А компилятор сайта почему-то выдаёт ошибку. В чём проблема?
p.s Если будут предложения по оптимизации - буду рад
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2019, 17:30
Ответы с готовыми решениями:

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

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

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

11
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
15.05.2019, 09:36
Цитата Сообщение от BeginHelloWorld Посмотреть сообщение
выдаёт ошибку. В чём проблема?
Угадайте - что нужно ещё написать, чтобы кто-нибудь помог вам с этой ошибкой?
0
21 / 15 / 8
Регистрация: 23.10.2017
Сообщений: 102
15.05.2019, 10:20
А что в тексте ошибки-то написано? Вряд ли что-то вроде «я не хочу исполнять твой код, он мне не нравится». Текст ошибки приведите, пожалуйста.

Добавлено через 1 минуту
А уравнение таки Диофантово (был такой древнегреческий математик Диофант), но это уже так, лирика.
1
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
15.05.2019, 20:11  [ТС]
В том и проблема)). Единственное, что выдает компилятор сайта: "Ошибка во время выполнения программы".

Добавлено через 53 секунды
Знаю, знаю, что Диофантово. Просто сначала описался, а потом не знал как исправить заглавие).
0
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 18
15.05.2019, 23:27
Мало того, что многие начинающие программисты плохо понимают, что у интерпретатора под капотом происходит, вы ещё и на левые сайты залезаете, что бы запустить свой скрипт.
Коллега, это бинго!
0
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
16.05.2019, 06:09  [ТС]
Наверное, я плохо объясняю...
Я отправляю задачу на проверку на сайт, где обучаюсь Python. Конечно, перед этим я его проверяю у себя в PyCharm. И у меня все тесты проходят. А на сайте выдаётся ошибка.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
16.05.2019, 09:52
BeginHelloWorld, окей, замечание снимается.
0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
16.05.2019, 09:57
Цитата Сообщение от BeginHelloWorld Посмотреть сообщение
А на сайте выдаётся ошибка.
Так сделайте скрин сайта с ошибкой... хотя бы.
0
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
16.05.2019, 11:19  [ТС]
И что он Вам даст? Единственное, что там написано, я указал выше: Ошибка во время выполнения программы
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
16.05.2019, 11:30
gcd у вас какой-то странный, там плюса в конце не должно быть, вроде. Кроме того, есть math.gcd. На своих тестах прогоняли?
1
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
16.05.2019, 21:09  [ТС]
в gcd действительно была ошибка - в названии переменной. Также я не учел возможность ошибки в делении нацело. НО даже при исправлении этих ошибок, компилятор сайта все равно также "ругается".
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import sys
 
 
def gcd(a, b):
    while a != 0 and b != 0:
        if a < b:
            b = b % a
        else:
            a = a % b
    return a + b
 
 
def qr(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)
 
 
e = int(input())
r = int(input())
t = int(input())
if t == 0:
    print(0,0)
    sys.exit()
if e == r == 0:
    print('Impossible')
    sys.exit()
if e == 0:
    if t % r == 0:
        print(0, t // r)
        sys.exit()
    else:
        print('Impossible')
        sys.exit()
if r == 0:
    if t % e == 0:
        print(t // e, 0)
        sys.exit()
    else:
        print('Impossible')
        sys.exit()
 
 
x, y = 0, 0
gds = 0
if t % gcd(e, r) != 0:
    print('Impossible')
else:
    gds, x, y = map(int, qr(e, r))
    x *= t // gds
    y *= t // gds
    q = x // (r // gds)
    x %= r // gds
    y += e // gds * q
    print(x, y)
1
6 / 4 / 1
Регистрация: 28.06.2019
Сообщений: 20
10.06.2020, 16:31
А данные вводятся в одну строку и в несколько?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2020, 16:31
Помогаю со студенческими работами здесь

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

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

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

Диофантово уравнение
Добрый день, есть обратная задачка на диофантово уравнение, как можно ее решить? Условие: Уравнение задается ax+by=19990, где a и b -...

Диофантово уравнение
Существует ли решение в общем виде уравнения Ax + By = C в целых числах? (коэффициенты неизвестны, поэтому ничего &quot;угадать&quot;...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru