题目链接:
https://ac.nowcoder.com/acm/problem/16622
解题思路:
这题有个在拓扑序上的直觉。(并不完全是拓扑学,只是一种感觉)
举个例子,每i项,都是有了符号,再有系数,最后指数,我们确定了前面输出什么才有后面的判断。
但并不完全是这样,该题当指数为0时,会影响系数的输出格式(x是否要输出),这里直接提高优先级。
也是为什么不完全是拓扑序的原因。
AC代码:
// 系数:1.开头,+ 不输出,- 输出
// 2.中间,+,输出
// 3.和次数有关
// a.系数=1 且 >0次,则1无需输出
// b.系数=0,什么也不要输出
// c.次数=0,次数直接输出
//
// 次数:1.次数>1:输出x^b
// - 系数1,系数2,
// 2.次数=1:输出x
// 3.次数=0:系数可以x输出
#include <iostream>
using namespace std;
int main()
{
int n; cin >> n; // 项数:一共有n+1项
for (int i = n; i >= 0; -- i)
{
int x; cin >> x;
if (x == 0) continue;
if (i == n) // 开头符号
{
if (x < 0) cout << '-';
}
else // 中间符号
{
if (x > 0) cout << '+';
else cout << '-';
}
// 系数
if (abs(x) == 1 && i != 0) cout << 'x';
else if (i == 0) cout << abs(x);
else cout << abs(x) << 'x';
// 次数
if (i > 1) cout << '^' << i;
}
}
标签:输出,系数,cout,int,多项式,NOIP2009,次数,NC16622
From: https://www.cnblogs.com/ClockParadox43/p/17413272.html