考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h>
using namespace std;
int main() { int n, t; cin >> n; for (int i = n; i >= 0; --i) { cin >> t; if (i != n && t > 0) cout << "+"; if (abs(t) > 1 || (i == 0 && t != 0)) cout << t; if (t == -1 && i != 0) cout << "-"; if (i > 1 && t) cout << "x^" << i; else if (i == 1 && t) cout << "x"; } return 0; }
|
思路
字符串的问题,首先判断逐词读入还是整句读入;本题当然是逐次读入比较方便
得到常数项t和幂次i后,任务如下:
- 本次是否输出,直接判断常数是否为0即可
- 常数项的处理
- 自变量的处理
先来看常数项的处理:
什么时候输出+号?
常数不在开头,且大于0
如何输出数?
只要不是-1、0和1这三个数,任何地方都可以直接输出
能输出-1和1的地方,只有幂次等于0的时候
什么时候输出-号?
其实第2点已经基本处理完了,只剩一种情况,-1在多项式中间,此时只要输出一个-号即可
再来看自变量的处理:
什么时候输出x号?
幂次为1且常数项不为0
什么时候输出x^号?
幂次大于1且常数项不为0
综上,即可得到代码