Top.Mail.Ru
Ответы

Помогите решить задачу на Python.

Я пытался решить её много раз, но не получается. Текст задачи: Роб учится решать сложные уравнения. Он узнал, что многочлены можно записывать так:
ax 5 + bx 4 + cx 3 + dx 2 + ex + f.
Напиши программу, которая принимает натуральное число n, а затем n + 1 целых чисел — коэффициенты (a, b, c и так далее). Выведи многочлен.
При этом:
• Не печатай 1 перед одночленами с x.
• Ставь знак «-» вместо -1 перед одночленами с x.
• Пропускай произведения на 0.
Пиши коэффициенты с числами слитно, а знаки арифметических операций — через пробел.
Если все коэффициенты равны 0, ответом будет пустая строка.
Мой код:

123456789101112131415161718192021222324252627
 n = int(input().strip()) 
coefs = [int(input().strip()) for i in range(n + 1)] 
result = [] 
for i in range(n, -1, -1): 
    if coefs[n - i] == 0: 
        continue 
    if i == n: 
        result.append(f"{coefs[n - i]}x ** {i}") 
    elif i == 1: 
        if coefs[n - i] > 0: 
            result.append(f" + {coefs[n - i]}x") 
        else: 
            result.append(f" - {-coefs[n - i]}x") 
    elif i == 0: 
        if coefs[n - i] > 0: 
            result.append(f" + {coefs[n - i]}") 
        else: 
            result.append(f" - {-coefs[n - i]}") 
    else: 
        if coefs[n - i] > 0: 
            result.append(f" + {coefs[n - i]}x ** {i}") 
        else: 
            result.append(f" - {-coefs[n - i]}x ** {i}") 
if result: 
    print("".join(result)) 
else: 
    print("")  

Ввод:
5
-7
-1
-5
0
-3
-1
Мой вывод:
-7x ** 5 - 1x ** 4 - 5x ** 3 - 3x - 1
Правильный вывод:
-7x ** 5 - x ** 4 - 5x ** 3 - 3x - 1

По дате
По рейтингу
Аватар пользователя
Новичок
12345678910
 def next(a, n, prev):
  if a == 0: return prev
  return (prev +
    [['-', ''], [' - ', ' + ']][len(prev) != 0][a > 0] +
    ['', str(abs(a))][a not in [-1, 1] or n == 0] +
    ['', 'x', 'x ** %d' % n][(n > 0) + (n > 1)])

res = ''
for i in range(int(input()), -1, -1): res = next(int(input()), i, res)
print(res)