B-牛牛的身高_牛客小白月赛52 (nowcoder.com)
题目描述
牛牛:“你低我 4.86 厘米,四舍五入后就是 4.9 厘米,再四舍五入后就是 5 厘米,再四舍五入后就是 10 厘米!”
我们知道,牛牛很在意自己的身高,所以他想请你帮忙求一下他的身高四舍五入后的最大值是多少,为了简化问题,我们认为牛牛的身高是一个正整数。
“四舍五入”:这里的意思是可以以任何顺序在任意位进行任意次四舍五入,比如有:14861 -> 14900 -> 15000 -> 20000 。
输入描述:
第一行一个整数 TTT 代表案例组数。
接下来 TTT 行每行一个整数 nnn 代表牛牛的身高(适当放大后)。
保证:
1≤T≤103; 1≤n≤106;1\leq T \leq 10^3;\ \ 1 \leq n \leq 10^6;1≤T≤103; 1≤n≤106;
输出描述:
输出共 TTT 行,每行一个正整数代表牛牛四舍五入最大化自己的身高后的结果。
示例1
输入
5 1 2038 99999 13453 32921
输出
1 2040 100000 14000 33000
说明
对于 13453 这个数据,变化是这样的:
13453 --> 13500
13500 --> 14000
思路:
根据四舍五入的规律模拟一下
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int t;
vector<int> v;
int main() {
ios::sync_with_stdio(false);
cout.tie(nullptr);
cin >> t;
while(t --) {
int x;
cin >> x;
v.clear();
while(x) {
v.push_back(x % 10);
x /= 10;
}
reverse(v.begin(), v.end());
for(int i = v.size() - 1; i > 0; i --) {
if(v[i] >= 5) {
for(int j = i; j < v.size(); j ++) {
v[j] = 0;
}
v[i - 1] += 1;
}
}
if(v[0] >= 5) {
for(int j = 0; j < v.size(); j ++) {
v[j] = 0;
}
cout << 1;
}
for(int i = 0; i < v.size(); i ++) {
cout << v[i];
}
cout << "\n";
}
return 0;
}