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

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

14.05.2019, 17:30. Показов 9451. Ответов 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
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 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
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 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
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru