Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 05.01.2021
Сообщений: 12

Уравнение

15.01.2021, 12:19. Показов 3958. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ваша задача - решить уравнение с одним неизвестным х.
Уравнение состоит из +, -, x и целых чисел.
Будет один единственный знак =.
Знак плюс и равенство никогда не ставится в начале и в конце уравнения. Аналогично знак минус никогда не помещается в конец уравнения.

Некоторые пары знаков никогда не помещаются один за другим:

* плюс за плюсом*
* плюс после минуса
* минус после минуса
* минус после плюса
* x после x*
* плюс после равно *
* равно после плюса

Формат ввода:
Первая строка ввода состоит из одного целого числа Z, которое будет указывать на количество тестовых случаев.
Каждая из следующих N строк состоит из строки si - уравнения.

Формат вывода:
Для каждого тестового случая необходимо в отдельной строке задать одно число, решение заданного уравнения. В качестве альтернативы Вы должны предоставить одно слово NO, если нет решения или есть несколько решений.

Ответы будут проверены с точностью до 0,001.

Sample Input:
2
24-x+3x-2x=16-x
16-4x+2x-12=-2x+10

Sample Output:
-8
NO
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2021, 12:19
Ответы с готовыми решениями:

Уравнение
Дано уравнение вида Ax+By=C A,B,C-положительные целые числа. x и y неотрицательные неизвестные числа Нужно написать программу,...

Задача уравнение

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

26
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
15.01.2021, 14:02
LInnnn, с чем возникли сложности?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
15.01.2021, 16:34
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
def simplify(stri):
    a=0
    b=0
    p=1
    r=0
    for c in stri:
        if c.isdigit():
            r=r*10+int(c)
        elif c=='x':
            if r==0:
                a=p
            else:
                a+=r*p
            p=1
            r=0
        elif c=='+':
            b+=r*p
            p=1
            r=0
        elif c=='-':
            b+=r*p
            p=-1
            r=0
    if (r !=0):
        b+=r*p
    return (a,b)   
    
def solve(stri):
    p=stri.find("=")
    left=simplify(stri[0:p])
    right=simplify(stri[p+1:])
    (a,b)=(left[0]-right[0],left[1]-right[1])
    if a==0:
        print("NO")
    else:
        print(-b/a)
        
n=int(input())
for i in range(n):
    solve(input())
1
15.01.2021, 16:36

Не по теме:

Catstail, ну емае, там же тремя регулярками и одним действием можно решить...

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
15.01.2021, 16:53
DmFat, не уверен, что это так уж элементарно. Но с интересом взгляну на такое решение!
0
15.01.2021, 17:33

Не по теме:

Цитата Сообщение от DmFat Посмотреть сообщение
ну емае, там же тремя регулярками и одним действием можно решить...
Поверю, что можно регулярки заюзать для получения коэффициентов и их привидения, но чтобы в одно действие решить... За гранью моего понимания!

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
15.01.2021, 17:40
Catstail, срезал! )))
DmFat, присоединяюсь к интересу, жду решения
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
15.01.2021, 17:53
Цитата Сообщение от Welemir1 Посмотреть сообщение
Catstail, срезал! )))
- вовсе нет! И в мыслях не было. Действительно интересно. Я, к сожалению, с регэкспами не очень дружу... Все не выберу время как следует потренироваться.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
15.01.2021, 17:58
Catstail, я их в профессиональной карьере испоьзовал раза 3, в пет-проектах никогда =)
Держусь от этого сатанизма подальше, хотя да, порой решает кучу проблем. Ждем ДмФата с мастер-классом
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
15.01.2021, 18:01
Лучший ответ Сообщение было отмечено LInnnn как решение

Решение

LInnnn,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def fun(st) :
    # st = '16-4x+2x-12=-x+10'
    st = st.replace('-x', '-1x').replace('+x', '+1x')
    st = st.replace('+', ' +').replace('-', ' -')
    left_ , right_ = map(str, st.split('='))
    left_arr = left_.split()
    right_arr = right_.split()
    
    x_arr = ([int(ix[:-1]) for ix in left_arr if 'x' in ix]
     + [(-1)*int(ix[:-1]) for ix in right_arr if 'x' in ix])
     
    num_arr = ([(-1)*int(ix) for ix in left_arr if 'x' not in ix]
     + [int(ix) for ix in right_arr if 'x' not in ix])
     
    if sum(x_arr) :
        return round(sum(num_arr) / sum(x_arr) ,3)
    return 'NO'
 
n = int(input())
for _ in range(n) :
    print(fun(input()))
5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.01.2021, 23:39

Не по теме:

Цитата Сообщение от Welemir1 Посмотреть сообщение
Ждем ДмФата с мастер-классом
Присоединяюсь


0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
16.01.2021, 22:51
Цитата Сообщение от Gdez Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def fun(st) :
    # st = '16-4x+2x-12=-x+10'
    st = st.replace('-x', '-1x').replace('+x', '+1x')
    st = st.replace('+', ' +').replace('-', ' -')
    left_ , right_ = map(str, st.split('='))
    left_arr = left_.split()
    right_arr = right_.split()
x_arr = ([int(ix[:-1]) for ix in left_arr if 'x' in ix]
     + [(-1)*int(ix[:-1]) for ix in right_arr if 'x' in ix])
num_arr = ([(-1)*int(ix) for ix in left_arr if 'x' not in ix]
     + [int(ix) for ix in right_arr if 'x' not in ix])
if sum(x_arr) :
        return round(sum(num_arr) / sum(x_arr) ,3)
    return 'NO'
n = int(input())
for _ in range(n) :
    print(fun(input()))
Как вводить значения? После ввода 2 и 1 уравнения выходит ошибка????
Миниатюры
Уравнение  
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
16.01.2021, 22:54
Gdez, Все спасибо дошло!
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
17.01.2021, 11:40
Gdez, как сделать чтобы можно было решать квадратные и кубические уравнения???? Что то я не догоняю.
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
17.01.2021, 12:26
isaak, таким алгоритмом никак. Основное в этой задаче - чтение формулы и "вычленение" коэффициентов. (с 3-й по 7-ю строчки). Само решение уравнения реализовано в 8-й и 10-й строчках как решение линейного уравнения.
Для решения полиномов задача разбивается на два этапа:
- "чтение-расшифровка" формулы
- решение согласно условиям (целочисленное; всех корней и тд)
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
18.01.2021, 08:59
iSmokeJC, Welemir1, Catstail, ладно, погорячился я, с регулярками и парой действий, получилось... Прошу простить мое высказывание за 2 минуты до конца рабочего дня!

Пару набросков, признаюсь, я не особо старался.
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
import re
 
 
def foo(equation: str) -> str:
    equation = re.sub(r"([+-])x", r"\g<1>1x", equation)
    left, right = re.split("=", equation)
    right = re.sub(r"([+-]?)(\d+)",
                   lambda match: "-+"[match.group(1) == "-"] + match.group(2),
                   right)
    variables = re.findall(r"[+-]?\d+x?", left + right)
    devisor = sum(int(var.replace("x", "")) for var in variables if "x" in var)
    if devisor == 0: return "NO"
    return str(sum(int(var) for var in variables if "x" not in var) * (-1) / devisor)
 
 
assert foo("24-x+3x-2x=16-x") == "-8.0"
assert foo("16-4x+2x-12=-2x+10") == "NO"
assert foo("16-4x+2x-12=-x+10") == "-6.0"
 
 
 
def bar(equation: str) -> str:
    num, denom = 0, 0
    equation = re.sub(r"([+-])x", r"\g<1>1x", equation)
    left, right = re.split("=", equation)
    right = re.sub(r"([+-]?)(\d+x?|x)",
                   lambda match: "-+"[match.group(1) == "-"] + match.group(2),
                   right)
    def subber(match: re.Match):
        nonlocal num, denom
        value, x = match.groups()
        if not x: num += int(value)
        else: denom += int(value)
    re.sub(r"([+-]?\d+)(x?)", subber, left + right)
    if denom == 0: return "NO"
    return str(num / denom)
 
bar("24-x+3x-2x=16-x") == "-8.0"
bar("16-4x+2x-12=-2x+10") == "NO"
bar("16-4x+2x-12=-x+10") == "-6.0"
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
18.01.2021, 09:05
DmFat, отлично!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.01.2021, 09:05
DmFat,

Не по теме:

Ща придет краш-тестер Arsegg и все сломает!


0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
18.01.2021, 09:05
Цитата Сообщение от DmFat Посмотреть сообщение
Прошу простить мое высказывание за 2 минуты до конца рабочего дня!
ладно уж, спишем на усталость, но в следующий раз чтобы точно!
0
18.01.2021, 09:14

Не по теме:

Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ща придет краш-тестер Arsegg и все сломает!
За что так жестко? :'(

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2021, 09:14
Помогаю со студенческими работами здесь

Уравнение на питон
Добрый день,кто может написать такое уравнение ,я новичок и уже 3 час сижу и никак ... Помогите пожалуйста, заранее спасибо

Кубическое уравнение
Напишите программу, которая будет искать все целые X, удовлетворяющие уравнению AX3 + BX2 + CX + D = 0, где A, B, C, D — данные...

Уравнение на Python
Уравнение \left|ax-b \right|=c-2a(x-2) Отсюда через программу выразить и найти x (несколько случаев из-за модуля) a,b,c - любые...

Квадратное уравнение
Программа, которая по заданным коэффициентам квадратного уравнения находит его вещественные корни и их количество

Вычислить уравнение
Не могу понять как его решить, препод не объяснил)


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru