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 翻译