3 条题解
-
2
题目理解起来很好理解,就是分类麻烦点。
1.先讨论符号。
2.再讨论系数,指数,具体见下面代码。
AC代码
#include <bits/stdc++.h> using namespace std; int main() { int n, x; cin >> n; for (int i = n; i >= 0; i--) { cin >> x; if(x) { if (x > 0 && i != n) //为正并且不为第一个 cout << "+"; if (x < 0) //为负的情况 cout << "-"; if (abs(x) != 1 || !i) //系数不为1且指数为0 cout << abs(x); //用函数,不迷路! if (i > 1) //指数不为1的情况 cout << "x^" << i; else if (i == 1) //指数为1的情况 cout << "x"; } } return 0; }
-
1
题前吐槽
没啥技术含量,但是需要初中数学水平,还是道码农题,太坑人了!
题解
这道题就是模拟,输入之后一项一项输出。
一项输出首先输出正负号。特判最高项正时不输出,负时输出
-
;非最高项正时输出+
,负时输出-
。然后输出系数,特判系数为1不输出,注意是绝对值进行特判,而且当指数为0还是得输出,否则输出。
最后输出指数,特判为0不输出,特判为1只输出 ,否则输出。
#include <bits/stdc++.h> using namespace std; int n, a[105]; int main() { scanf("%d", &n); for (int i = 1; i <= n + 1; i++) scanf("%d", &a[n - i + 1]); for (int i = n; i >= 0; i--) // 枚举指数 { // 特判系数为0 if (a[i] == 0) continue; // 输出正负号 if (i == n) // 特判最高项 { if (a[i] > 0) // 正 { // 不输出 } if (a[i] < 0) // 负 { printf("-"); } } else { if (a[i] > 0) // 正 { printf("+"); } if (a[i] < 0) // 负 { printf("-"); } } // 输出系数 if (abs(a[i]) == 1) // 特判系数为1,注意是绝对值的 { // 不输出 if (i == 0) // 次数为0还是要输出 { printf("1"); } } else { printf("%d", abs(a[i])); } // 输出指数 if (i == 0) // 特判指数为0 { // 不输出 } else if (i == 1) // 特判指数为1 { printf("x"); } else { printf("x^%d", i); } } return 0; }
- 1
信息
- ID
- 1622
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 139
- 已通过
- 64
- 上传者