P17371 [ECNA 2023] Prof. Fumblemore and the Collatz Conjecture
题目描述
定义正整数上的 Collatz 函数 $C(n)$:
$$
C(n)=
\begin{cases}
\dfrac n2,&n\text{ 为偶数},\\
3n+1,&n\text{ 为奇数}.
\end{cases}
$$
正整数 $n$ 的 Collatz 序列 $CS(n)$ 为
$$
CS(n)=n,C(n),C(C(n)),C(C(C(n))),\ldots
$$
例如,
$$
CS(12)=12,6,3,10,5,16,8,4,2,1,4,2,1,\ldots
$$
Collatz 猜想也称 $3n+1$ 问题,它断言每个正整数 $n$ 的 $CS(n)$ 最终都会进入重复序列 $4,2,1$。时至今日,这一猜想仍未解决:既没有证明,也没有在非常大的范围内找到反例。
Fumblemore 教授想用“Collatz 序列类型”研究这个问题。整数 $n$ 的 Collatz 序列类型记作 $CST(n)$,它是由字母 `E` 和 `O` 组成的序列,分别表示 $CS(n)$ 中各项的奇偶性,记录到第一个 $2$ 的幂出现之前,但不包含这个 $2$ 的幂。因此
$$
CST(12)=\texttt{EEOEO}.
$$
又因为 $CS(908)$ 在到达第一个 $2$ 的幂前依次为
$$
908,454,227,682,341,
$$
下一项为 $1024$,所以 $12$ 和 $908$ 具有相同的 $CST$。
Fumblemore 教授需要一个程序:输入一串 `E` 和 `O`,返回满足该字符串等于 $CST(n)$ 的最小整数 $n$。
注意:
- `E` 对应不是 $2$ 的幂的偶数;
- `O` 对应大于 $1$ 的奇数;
- 序列最后一个字符必须是 `O`,因为若 $C(n)$ 是 $2$ 的幂,则 $n$ 也是 $2$ 的幂;
- 不能有两个连续的 `O`,因为奇数经过 $C$ 后会变成偶数;
- Fumblemore 教授不擅长打字,因此在求 $n$ 前必须检查输入是否合法:字符串只能包含 `E` 和 `O`,必须以 `O` 结尾,并且不能有相邻的两个 `O`。
输入格式
输入一行,包含一个长度不超过 $50$ 的字符串。
输出格式
如果输入字符串不合法,输出 `INVALID`;否则输出一个十进制整数 $n$,表示满足 $CST(n)$ 等于输入字符串的最小整数。保证测试数据中的答案满足 $n\le 2^{47}$。