题解
2025-02-06 19:08:03
发布于:浙江
2阅读
0回复
0点赞
题目复述
一元 (n) 次多项式可用如下的表达式表示:(f(x)=a_{n}x^{n}+a_{n - 1}x^{n - 1}+\cdots+a_{1}x + a_{0}),其中 (a_{n}\neq0) 。这里 (a_{i}x^{i}) 称为 (i) 次项,(a_{i}) 称为 (i) 次项的系数。
现在给出一个一元多项式各项的次数和系数,需要按照如下规定的格式要求输出该多项式:
- 多项式中自变量为 (x),从左到右按照次数递减顺序给出多项式。
- 多项式中只包含系数不为 (0) 的项。
- 如果多项式 (n) 次项系数为正,则多项式开头不出 (+) 号,如果多项式 (n) 次项系数为负,则多项式以 (-) 号开头。
- 对于不是最高次的项,以 (+) 号或者 (-) 号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于 (0) 次的项,其系数的绝对值为 (1),则无需输出 (1))。如果 (x) 的指数大于 (1),则接下来紧跟的指数部分的形式为“(x^{b})”,其中 (b) 为 (x) 的指数;如果 (x) 的指数为 (1),则接下来紧跟的指数部分形式为 (x);如果 (x) 的指数为 (0),则仅需输出系数即可。
- 多项式中,多项式的开头、结尾不含多余的空格。
输入格式:
输入共有 (2) 行。
第一行 (1) 个整数 (n),表示一元多项式的次数。
第二行有 (n + 1) 个整数,其中第 (i) 个整数表示第 (n - i + 1) 次项的系数,每两个整数之间用空格隔开。
输出格式:
输出共 (1) 行,按题目所述格式输出多项式。
输入输出样例:
- 输入 #1
5
100 -1 1 -3 0 10
输出 #1
100x^5-x^4+x^3-3x^2+10
- 输入 #2
3
-50 0 0 1
输出 #2
-50x^3+1
说明/提示:
对于 (100%) 数据,(0\leq n\leq100),(-100\leq) 系数 (\leq100)。
解题思路
- 读取输入:首先读取多项式的次数 (n),然后读取 (n + 1) 个系数。
- 遍历系数:从最高次项开始遍历每个系数,根据系数和次数的情况按照规则构建多项式的每一项。
- 构建每一项:
- 对于最高次项,如果系数为正,直接输出系数(绝对值)和 (x) 的相应指数形式;如果系数为负,输出负号和系数的绝对值以及 (x) 的相应指数形式。
- 对于非最高次项,如果系数为正,输出
+
号,再根据系数和次数输出相应的项;如果系数为负,输出-
号,再根据系数和次数输出相应的项。 - 当系数绝对值为 (1) 且次数大于 (0) 时,不输出 (1)。
- 当次数为 (0) 时,直接输出系数。
- 当次数为 (1) 时,输出 (x) 而不是 (x^1)。
- 输出结果:将构建好的多项式输出。
C++ 代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
string result = "";
for (int i = n; i >= 0; i--) {
int coef;
cin >> coef;
if (coef == 0) continue;
if (result.length() > 0) {
if (coef > 0) result += "+";
else result += "-";
coef = abs(coef);
} else {
if (coef < 0) result += "-";
coef = abs(coef);
}
if (i == 0) {
result += to_string(coef);
} else if (i == 1) {
if (coef == 1) result += "x";
else result += to_string(coef) + "x";
} else {
if (coef == 1) result += "x^" + to_string(i);
else result += to_string(coef) + "x^" + to_string(i);
}
}
if (result.length() == 0) result = "0";
cout << result << endl;
return 0;
}
Python 代码实现
n = int(input())
coefficients = list(map(int, input().split()))
terms = []
for i, coef in enumerate(coefficients):
degree = n - i
if coef == 0:
continue
if degree == 0:
term = str(coef)
elif degree == 1:
if coef == 1:
term = 'x'
elif coef == -1:
term = '-x'
else:
term = f'{coef}x'
else:
if coef == 1:
term = f'x^{degree}'
elif coef == -1:
term = f'-x^{degree}'
else:
term = f'{coef}x^{degree}'
terms.append(term)
if not terms:
result = '0'
else:
result = terms[0]
for term in terms[1:]:
if term[0] != '-':
result += '+' + term
else:
result += term
print(result)
这里空空如也
有帮助,赞一个