首页 > 试题广场 >

多项式输出

[编程题]多项式输出
  • 热度指数:4192 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一元 n 次多项式

f(x)=a_nx^n+a_{n-1}x^{n-1}+\dots+a_1x+a_0

\hspace{15pt}其中 a_n\neq0,系数 a_i\ (0\leqq i\leqq n) 满足 -100\leqq a_i\leqq100

\hspace{15pt}请按如下规则将多项式输出为字符串:
\hspace{23pt}\bullet\, 从高次到低次依次输出;
\hspace{23pt}\bullet\, 系数为 0 的项完全省略
\hspace{23pt}\bullet\, 对于次数大于等于 1 的项,若其系数为 1-1,则省略系数的绝对值 1(常数项即使为 1-1 也应完整输出);
\hspace{23pt}\bullet\, 次数为 0 仅输出常数;次数为 1 输出 x;次数 \geqq2 输出 \texttt{x^} k
\hspace{23pt}\bullet\, 输出的第一个非零项(即最高次项)若系数为正,不输出前导加号;后续正系数项前需加 \texttt{+},负系数项加 \texttt{-}

输入描述:
\hspace{15pt}第一行输入整数 n\left(1\leqq n\leqq100\right),表示多项式次数。
\hspace{15pt}第二行输入 n+1 个整数 a_n,a_{n-1},\dots,a_0,依次为 n 次项到 0 次项(常数项)的系数。


输出描述:
\hspace{15pt}在一行输出格式化后的多项式字符串。
示例1

输入

5
100 -1 1 -3 0 10

输出

100x^5-x^4+x^3-3x^2+10
示例2

输入

3
-50 0 0 1

输出

-50x^3+1
n = int(input())
a = list(input().split())

for i in range(n):
    flag = '^'+str(n-i)
    if i==n-1:
        flag = ''
    if a[i]=='-1':
        a[i] = '-'+'x'+flag
    elif a[i]=='1' and i!=0:
        a[i] = '+'+'x'+flag
    elif a[i]=='0':
        a[i] =''
    elif int(a[i])<0:
        a[i] += 'x'+flag
    else:
        if i==0:
            if a[i]=='1':
                a[i] = 'x'+flag
            else:
                a[i] += 'x'+flag
        else:
            a[i] = '+'+a[i]+'x'+flag

if int(a[-1])>0:
    a[-1] = '+'+a[-1]
elif int(a[-1])==0:
    a[-1] = ''

print(''.join(a))
发表于 2025-08-25 12:03:54 回复(0)