CF1857B Maximum Rounding

题目描述

给定一个自然数 $x$,你可以进行如下操作: - 选择一个正整数 $k$,并将 $x$ 四舍五入到第 $k$ 位。 注意,数位从右到左编号,从 $0$ 开始。如果该数有 $k$ 位,则认为第 $k$ 位上的数字为 $0$。 四舍五入的规则如下: - 如果第 $(k-1)$ 位上的数字大于等于 $5$,则第 $k$ 位上的数字加 $1$,否则第 $k$ 位上的数字不变(即采用数学四舍五入)。 - 如果操作前第 $k$ 位上的数字为 $9$,且需要加 $1$,则向更高位查找最小的 $k'$($k'>k$),使得第 $k'$ 位上的数字小于 $9$,并将第 $k'$ 位上的数字加 $1$。然后令 $k=k'$。 - 之后,将所有小于 $k$ 的位上的数字都变为 $0$。 你的任务是,在可以进行任意次操作的情况下,使 $x$ 尽可能大。 例如,若 $x=3451$,则依次选择: - $k=1$,操作后 $x$ 变为 $3450$; - $k=2$,操作后 $x$ 变为 $3500$; - $k=3$,操作后 $x$ 变为 $4000$; - $k=4$,操作后 $x$ 变为 $0$。 为了最大化答案,应先选择 $k=2$,再选择 $k=3$,此时数字变为 $4000$。

输入格式

第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。 每个测试用例包含一个正整数 $x$,长度不超过 $2 \cdot 10^5$。保证整数中没有前导零。 保证所有测试用例中所有 $x$ 的位数之和不超过 $2 \cdot 10^5$。

输出格式

对于每组输入数据,输出经过操作后 $x$ 的最大可能值。输出的数字表示中不应有前导零。

说明/提示

在第一个样例中,最好不进行任何操作。 在第二个样例中,可以进行一次操作得到 $10$。 在第三个样例中,可以选择 $k=1$ 或 $k=2$,两种情况下答案都是 $100$。 由 ChatGPT 4.1 翻译