#1436. Strange Function
Strange Function
描述
定义一个奇怪的函数 f(x)(x > 0):
- 若 x 的十进制表示中存在非 0 和非 1 的数字,则将 x 的每一位数字替换为:若该位数字为奇数则变为 1,否则(偶数)变为 0,得到新数 y(保持原位数,无前导零丢失),并令 f(x) = y;
- 否则(即 x 的每一位仅含 '0' 或 '1'),令 f(x) = x - 1。
给定正整数 x(满足 1 ≤ x < 10^(2×10⁵),即最多 200000 位),反复应用 f 直到结果为 0。求所需应用次数(即从 x 开始,f(x), f(f(x)), ...,直到首次得到 0 的步数),答案对 10⁹+7 取模。
注意:0 不再应用 f;过程严格终止于 0,且保证有限步内可达。
输入输出格式
输入
第一行一个整数 T(测试用例数)。接下来 T 行,每行一个不含前导零的十进制字符串 x(长度 ≥ 1),表示初始数。所有输入字符串总长度不超过 10⁶。
输出
对每个测试用例,输出一行一个整数:应用 f 直到得到 0 所需的最少步数,对 10⁹+7 取模。
样例
2
24680
210
1
4
限制
- 1 ≤ T ≤ 10⁵,但所有输入数字字符串总长度 ≤ 10⁶;
- 每个 x 是合法十进制正整数字符串,无前导零,长度在 1 到 200000 之间;
- 时间限制:单次计算需高效(不能模拟每一步,因步数可能极大);
- 空间限制:O(字符串长度);
- 输出答案需对 10⁹+7 取模。