#P3008. 奇怪的函数

奇怪的函数

题目描述

对于所有正整数 xx ,函数 f(x)f(x) 定义如下:

  • 如果 xx 含有任何不是 0011 的数字,那么对于 xx 的每一位:若该位是奇数则改成 11 ,否则改成 00 ,并返回得到的新数。
  • 否则,返回 x1x-1

给定一个 xx (1x102×105)(1 \leq x \leq 10^{2 \times 10^5}) ,求需要对 xx 应用多少次 f(x)f(x) 才能使 xx 变成 00 。由于这个次数可能很大,输出它对 109+710^9+7 取模的结果。

输入格式

第一行包含 TT (1T105)(1 \leq T \leq 10^5) ,表示独立测试用例个数。

接下来 TT 行,每行一个正整数 xx ,仅由数字 0-9 组成,且没有前导零。

保证所有输入整数的总位数不超过 10610^6

输出格式

对每个测试用例,输出所求次数对 109+710^9+7 取模后的结果,每个结果占一行。

输入输出样例 #1

输入 #1

2
24680
210

输出 #1

1
4

输入输出样例 #2

输入 #2

1
1234567890123456789012345678901234567890

输出 #2

511620083

说明/提示

样例解释

第一个测试: xx 经过一次操作后变为零。

第二个测试: f(x)=10,f2(x)=9,f3(x)=1,f4(x)=0f(x)=10,f^2(x)=9,f^3(x)=1,f^4(x)=0

数据范围

  • 1T1051\leq T \leq 10^5
  • 每个测试中, xx 均为无前导零的正整数
  • 每个 xx 的位数不超过 2×1052\times 10^5
  • 所有测试用例中 xx 的总位数不超过 10610^6
评分占比 其它限制
20%20 \% T2000,x109T \leq 2000,x \leq 10^9
x1018x\leq 10^{18}
x1060x\leq 10^{60}
40%40 \% 无额外限制