P1067 [NOIP2009 普及组] 多项式输出
时间: 2025-02-01 15:47:54 浏览: 32
NOIP2009 普及组 多项式输出题目解析
题目描述
给定一个多项式的系数列表,按照特定格式输出该多项式。对于每一项,如果其指数大于等于1,则该项应表示为ax^b
的形式;如果指数为0,则仅显示常数项a。
输出要求
- 如果某个位置上的系数ai=0,则不输出此项;
- 若最高次幂的系数为负数,在表达式最前面加'-'号;
- 对于x的一次项,省略指数部分只保留x;
- 常数项前如果有其他非零项存在则去掉正号;
- 各单项之间用单个空格分隔,最后一个字符后面不应有额外空白。
示例分析
假设输入数组代表的是多项式的各项系数,从最低位到最高位排列:
Input: [-3, 5, 0, -7]
Output: "-3 + 5*x - 7*x^3"
这里解释一下上述例子中的转换过程:
-3
: 是常数项,直接写出。5*x
: 表示一次项,由于规定了一次项不需要写明指数,所以写作5*x
。- 跳过二次项因为它对应的系数是0。
-7*x^3
: 最后一项三次项,正常按规则书写。
Python实现代码
下面是一个简单的Python函数来完成这项工作:
def polynomial_output(coeffs):
terms = []
for i, coeff in enumerate(reversed(coeffs)):
if coeff != 0:
sign = "-" if coeff < 0 else ""
abs_coeff = abs(coeff)
if i == 0:
term = f"{sign}{abs_coeff}"
elif i == 1:
term = f"{'' if not sign and abs_coeff==1 else sign+' '+str(abs_coeff)}*x"
else:
term = f"{'' if not sign and abs_coeff==1 else sign+' '+str(abs_coeff)}*x^{i}"
terms.append(term.strip())
result = " + ".join(terms[::-1]).replace("+ -", "- ")
return result.lstrip('+ ').rstrip()
此段代码实现了根据给定的系数列表构建符合要求的多项式字符串功能[^1]。
阅读全文
相关推荐

















