#P16494. [PM2355]康托集里的幸运数字

[PM2355]康托集里的幸运数字

背景

数学系学生小林最近迷上了分形。她在图书馆读到 19 世纪数学家格奥尔格·康托提出的一个著名构造:从区间 [0.0,1.0][0.0, 1.0] 出发,反复挖去每一段区间的「正中间三分之一开区间」。

小林想在室友生日前做一个小程序,帮她快速判断一个 [0,1][0,1] 范围内的小数是在第几步被挖掉的;如果这个小数在前 10000001\,000\,000 步都没有被挖掉,她就认定它「非常可能是康托集里的幸运数字」,记为第 00 步。

题目描述

康托集的构造规则如下:

  • 初始区间为 [0.0,1.0][0.0, 1.0]
  • 11 步:去掉区间 [0.0,1.0][0.0, 1.0] 的中间三分之一开区间,即 (1/3,2/3)(1/3, 2/3)
  • 22 步:对剩下的 22 个区间各自去掉中间三分之一开区间;
  • kk 步:对剩下的 2k12^{k-1} 个区间各自去掉中间三分之一开区间。

康托集就是 [0.0,1.0][0.0, 1.0] 中在上述所有步骤里都没有被去掉的部分。

现在给定一个 [0.0,1.0][0.0, 1.0] 内的十进制小数 xx(以字符串形式给出,首位为 .,后面全是数字),输出 xx 是在第几步被去掉的。如果 xx 在前 10000001\,000\,000 步中均未被去掉,则输出 00

输入格式

一行一个字符串 xx,表示一个小数。

  • 字符串长度在 225050 之间(含);
  • 第一个字符为 .
  • 其余字符均为 09 的数字。

输出格式

输出一个整数:

  • xx 在第 kk 步被去掉(1k10000001 \le k \le 1\,000\,000),输出 kk
  • 若前 10000001\,000\,000 步均未去掉 xx,输出 00

样例

样例 1

.200
2

样例 2

.975
0

样例 3

.8
2

数据范围

  • 字符串长度 2x502 \le |x| \le 50
  • xx 的首字符为 .,其余字符均为数字;
  • xx 表示的数值在 [0.0,1.0][0.0, 1.0] 内。