跳转至

装备增幅

  • 参考时间限制:1.0 秒。
  • 实际时限:标准程序在目标环境的最慢用例中位耗时乘以 2,再按 0.5 秒向上取整。
  • 内存限制:128 MB。
  • 参考评测环境与测量

背景故事

装备增幅可能成功,也可能使装备降级。铁匠正在研究一种按数字判定成功的规则,希望统计不同数值范围内成功的次数。

形式化问题描述

把非负整数 \(S\) 分别写成二进制和十进制。两种表示都从最低位开始编号为 \(0,1,\ldots\) ,在高位补无限多个零。设对应数字为 \(b_i\) 和 \(d_i\) .

当且仅当每个位置都满足 \(b_i\ge d_i\) 时,称 \(S\) 为成功值。例如,十进制 \(10\) 的二进制为 \(1010\) ,它是成功值;十进制 \(1010\) 的二进制为 \(1111110010\) ,位置 \(3\) 上的二进制数字小于十进制数字,因此它不是成功值。

给定 \(q\) 次询问,每次给出非负整数 \(N\) ,求 \(0\le S\le N\) 中成功值的个数。数字 \(0\) 也按上述规则计算。

输入格式

第一行一个整数 \(q\) .接下来 \(q\) 行,每行一个十进制整数 \(N\) 。

输出格式

输出 \(q\) 行,每行一个整数,表示对应询问的答案。

样例 1

输入

2
55
6

输出

4
2

样例 2

输入

4
0
1
10
1010

输出

1
2
3
10

样例 3

输入

3
999999999999999999999999999999
111111111111111111111111111111
0

输出

715704
715704
1

样例解释

样例一中,不超过 \(55\) 的成功值为 \(0,1,10,11\) ;不超过 \(6\) 的成功值为 \(0,1\) .

数据范围与保证

\(1\le q\le100\) ;\(0\le N\le10^{30}-1\) .提交代码长度限制为 50 KB。

分值比例 额外条件
100% 无额外条件