3 条题解
-
0
思路: 既然是四舍五入,那当然是越往左越应该入,这样才能使修改后的数更大。 我们可以把整个字符串自右向左扫,只要满足了进位条件,那就进位。并将标记放到这里。 最后输出时,只要在非标记区域,正常输出即可,否则输出 0。
#include <bits/stdc++.h> using namespace std; int t; string s; int main() { cin >> t; while (t--) { cin >> s; s = '0' + s; // 预处理最高位 int sswr = s.size(); for (int i = s.size() - 1; i > 0; i--) { if (s[i] == '9' + 1) { // 满十进一 s[i] = '0'; s[i - 1]++; } if (s[i] >= '5') { // 五入 sswr = i; s[i - 1]++; } } for (int i = 0; i < s.size(); i++) { // 输出 if (i == 0 && s[i] == '0') continue; if (i < sswr) cout << s[i]; else cout << '0'; } puts(""); } return 0; }
信息
- ID
- 1175
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 196
- 已通过
- 29
- 上传者