#P2230. [USACO24DEC] Roundabount Rounding B

[USACO24DEC] Roundabount Rounding B

题目描述

奶牛 Bessie 回到学校了!她开始做她的数学作业,在作业中她被要求将正整数四舍五入到 1010 的幂。

要将一个正整数 aa 四舍五入到最接近的 10b10^b,其中 bb 为正整数,Bessie 首先找到从右往左数第 bb 个数位。令 xx 为这个数位。

如果 x5x≥5,Bessie 将 aa 增加 10b10^b

然后,Bessie 将从右侧开始直至第 bb 个数位的所有数位均设置为 00

例如,如果 Bessie 想要将 456456 四舍五入到最接近的 10210^2(百位),Bessie 会首先找到从右往左数第 22 个数位 55。这意味着 x=5x=5。然后由于 x5x≥5,Bessie 将 aa 增加 100100。最后,Bessie 将 aa 中从右侧开始直至第 22 个数位的所有数位设置为 00,结果为 500500

但是,如果 Bessie 将 446446 四舍五入到最接近的 10210^2,她将得到 400400

在看了 Bessie 的作业后,Elsie 认为她已经发明了一种新的舍入方式:链式舍入。要链式舍入到最接近的 10b10^b,Elsie 将首先舍入到最接近的 10110^1,然后舍入到最接近的 10210^2 ,以此类推,直至舍入到最接近的 10b10^b

Bessie 认为 Elsie 是错误的,但她太忙于数学作业,无法确认她的怀疑。她请你计算出存在多少个不小于 22 且不超过 NN 的整数 xx1N1091≤N≤10^9),使得将 xx 四舍五入到最接近的 10P10^P 与链式舍入到最接近的 10P10^P 的结果不同,其中 PP 是满足 10Px10^P≥x 的最小整数。

输入格式

你需要回答多个测试用例。

输入的第一行包含一个整数 TT1T1051≤T≤10^5),为测试用例的数量。以下是 TT 个测试用例。

每个测试用例的输入仅有一行,包含一个整数 NN。输入保证同一测试点中的所有 NN 各不相同。

输出格式

输出 TT 行,第 ii 行包含第 ii 个测试用例的答案。每行包含一个整数,表示存在多少个不小于 22 且不超过 NN 的整数在使用两种舍入方法时会得到不同的结果。

样例 #1

样例输入 #1

4
1
100
4567
3366

样例输出 #1

0
5
183
60

提示

样例解释

考虑样例中的第二个测试用例。4848 应当被计算在内,因为 4848 链式舍入到最接近的 10210^2100100485010048→50→100 ),但 4848 四舍五入到最接近的 10210^200

在第三个测试用例中,4848480480 是两个被计算在内的整数。4848 链式舍入到 100100 而不是 00480480 链式舍入到 10001000 而不是 00。但是,6767 不被计算在内,因为它链式舍入到 100100,与 6767 四舍五入到最接近的 10210^2 相同。

测试点性质

  • 测试点 1:样例。
  • 测试点 2-4:N103N≤10^3
  • 测试点 5-7:N106N≤10^6
  • 测试点 8-13:没有额外限制。