#844. 最大化四舍五入(round)
最大化四舍五入(round)
读写要求
本题采用文件读写,请在提交代码时使用正确的文件读写方式,否则会导致 RE
输入:round.in
输出:round.out
题目描述
给定一个自然数 。你可以执行如下操作:
- 选择一个正整数 ,并将 四舍五入到第 位。
注意,数位的位置从右往左编号,从 开始。如果这个数有 位,则认为第 位上的数字等于 。
四舍五入规则如下:
- 如果第 位上的数字大于等于 ,那么第 位上的数字增加 ;否则第 位上的数字保持不变(使用数学意义上的四舍五入)。
- 如果操作前第 位上的数字是 ,并且它需要增加 ,那么我们寻找最小的位置 (),满足第 位上的数字小于 ,然后将第 位上的数字增加 。然后令
- 之后,所有位置小于 的数字都被替换为 (不论前面是舍还是入)。
你的任务是,在可以执行任意多次操作的情况下,使 尽可能大。
例如,如果 等于 ,那么如果你依次选择:
- ,操作后 会变成
- ,操作后 会变成
- ,操作后 会变成
- ,操作后 会变成
为了使答案最大,你需要先选择 ,再选择 ,这样这个数会变成 。
输入格式
第一行包含一个整数 ()——表示测试用例的数量。
每个测试用例包含一个正整数 ,其长度不超过 。保证该整数没有前导零。
保证所有测试用例中整数 的长度之和不超过 。
输出格式
对于每组输入数据,输出经过操作后 的最大可能值。该数的表示中不应包含前导零。
输入输出样例
10
1
5
99
913
1980
20444
20445
60947
419860
40862016542130810467
1
10
100
1000
2000
20444
21000
100000
420000
41000000000000000000
说明/提示
在第一个样例中,最好不执行任何操作。
在第二个样例中,你可以执行一次操作并得到 。
在第三个样例中,你可以选择 或 。两种情况下答案都是 。