算法学习记录:NC16622[NOIP2009]多项式输出

题目链接:

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;
}
}
posted @   想个昵称好难ABCD  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示