A4. 多项式输出
2026-06-19 13:52:29
发布于:浙江
4阅读
0回复
0点赞
原本我想发的讨论
求助!!!!!
不是我第一个样例都错……
#include <bits/stdc++.h>
using namespace std;
int a, n, zuigao;
int main() {
cin >> n;
for (int i = n; i >= 1; --i) {
bool flag = 1;
cin >> a;
if (a == 0) continue;
if (zuigao != 0) zuigao = i;
if (a > 0 && i != zuigao) cout << "+";
else {
if (i == zuigao) {
if (a == -1) cout << "-";
else if (a != 1) cout << a;
flag = 0;
} else {
cout << "-";
a = -a;
}
}
if (a != 1 && flag) cout << a;
cout << "x";
if (i != 1) cout << "^" << i;
}
cin >> a;
if (a > 0) cout << "+";
if (a != 0) cout << a;
return 0;
}
输入
5
100 -1 1 -3 0 10
不是我输出
+100x^5-x^4+x^3-3x^2+10
太接近了
我想问问为啥我多输出个加号^~^
我现在知道答案了
这dai码是我乱写的
其实只要改一个字就行了
思路:最后输常数项
定义:就是数组(空间压缩完美)
:题目的
:最高次项为
:是否提前输出,是为,不是为。
循环体:
:跳过不输出
:此项为最高次项
不是最高且系数大于:输出(最高了就不用)
是最高
系数:
:负号
:啥也不用
七塌:就是
已提前输出
flag = 0
负常数项不说了
没有提前输出且现在不为:输出
输出与幂次
最后常数项不说了
把正解亮出来
#include <bits/stdc++.h>
using namespace std;
int a, n, zuigao;
int main() {
cin >> n;
for (int i = n; i >= 1; --i) {
bool flag = 1;
cin >> a;
if (a == 0) continue;
if (zuigao == 0) zuigao = i;
if (a > 0 && i != zuigao) cout << "+";
else {
if (i == zuigao) {
if (a == -1) cout << "-";
else if (a != 1) cout << a;
flag = 0;
} else {
cout << "-";
a = -a;
}
}
if (a != 1 && flag) cout << a;
cout << "x";
if (i != 1) cout << "^" << i;
}
cin >> a;
if (a > 0) cout << "+";
if (a != 0) cout << a;
return 0;
}
全部评论 1
既然3个人都阅读了 那就点赞 再来个评论吧昨天 来自 浙江
0

有帮助,赞一个