CF1702A Round Down the Price

题目描述

在商店里,售货员希望将所有商品的价格都变成整洁的数字。 在本题中,若一个数字是 $10$ 的幂,则称其为“整洁数字”。例如,$10^0 = 1$、$10^1 = 10$、$10^2 = 100$ 都是整洁数字,但 $20$、$110$ 和 $256$ 不是整洁数字。 因此,如果某件商品的价格为 $m$ 布尔(商品的价格不超过 $10^9$),售货员希望将其价格改为不大于 $m$ 的最近的整洁数字。他们想知道:需要将商品的价格减少多少布尔,才能使其价格恰好等于 $10^k$ 布尔,其中 $k$ 的取值应尽可能大($k$ 为任意非负整数)。 例如,若商品的价格为 $178$ 布尔,则新的价格应为 $100$,答案为 $178-100=78$。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例为一行,包含一个整数 $m$($1 \le m \le 10^9$),表示商品的价格。

输出格式

对于每个测试用例,输出一行一个整数 $d$($0 \le d < m$),表示需要将商品价格减少 $d$ 布尔,使得商品的价格变为最大的整洁数字。更正式地说:$m-d=10^k$,其中 $k$ 为最大的非负整数。

说明/提示

例如: - $1-0=10^0$, - $2-1=10^0$, - $178-78=10^2$, - $20-10=10^1$, - $999999999-899999999=10^8$, - $9000-8000=10^3$, - $987654321-887654321=10^8$。 注意,每个测试用例中,得到的都是最大的整洁数字。 由 ChatGPT 4.1 翻译