算法知识点: 字符串处理,模拟
复杂度:
解题思路:
从前往后依次处理每一项,依次考虑符号、系数、x、x的次数:
- 如果系数是0,则直接continue;
- 如果不是第一个非零项,且系数是正的,则输出'+';如果系数是负的,则无条件输出'-';
- 如果系数的绝对值不是1,或者是常数项,则输出系数的绝对值;
- 如果次数不为0,则输出x
- 如果次数大于1,则输出次数
C++ 代码:
#include <iostream> #include <algorithm> using namespace std; int main() { int n; cin >> n; bool is_first = true; for (int i = n; i >= 0; i -- ) { int a; cin >> a; if (!a) continue; if (!is_first && a > 0) printf("+"); else if (a < 0) printf("-"); if (abs(a) != 1 || !i) printf("%d", abs(a)); if (i) printf("x"); if (i > 1) printf("^%d", i); is_first = false; } return 0; }