SamHH0912 さんのブログ

ブログ

#11582. Will It Stop? 题解

2025-07-05 13:26:33 By SamHH0912

题目传送门

题意简述

给定一个整数 $n$($2\le n\le 10^{14}$),在 $n\gt 1$ 时重复执行:

  • 如果 $n$ 是偶数,那么让 $n$ 变为原来的一半($n\leftarrow\frac{n}{2}$);
  • 如果 $n$ 是奇数,那么让 $n$ 变为 $3\times n+3$($n\leftarrow 3n+3$)。

问是否能在有限次步数内结束操作。是输出 TAK,否输出 NIE

分析

结论题。

没有思路,不妨画个图表示一下变换的过程(请读者自行画图)。画了一段时间后不难发现,能走到点 $1$ 的点只有 $2,4,8,...$ 这些编号为 $2^k$ 的点。猜测当且仅当 $n$ 是 $2$ 的正整数次幂时,操作能在有限步数内结束。

下面来证明一下这个结论。充分性是显然的,接下来证必要性。

如果 $n$ 不是 $2$ 的正整数次幂,由于 $n\ge 2$ 且 $n$ 为正整数,故 $n$ 的质因数分解中必存在奇数因子。

操作时,根据规则,$n$ 中 $2$ 的幂次将降至 $0$,然后执行 $n$ 为奇数时的操作。

等等!$3n+3=3(n+1)$,也就是说 $n$ 在执行完这次操作之后一定会带上 $3$ 这个因子!

此后 $n$ 为偶数的操作中,$3$ 这个因子无法被消除,到 $n$ 重新变为奇数之前,$3$ 这个因子永远会存在。再次进行了 $n\leftarrow 3(n+1)$ 这个操作后,$3$ 这个因子仍然是存在的!

因此,我们得出结论:只要 $n$ 不是 $2$ 的倍数,那么它将会永远被 $3$ 所支配(操作不会结束)!!

必要性得证,因此问题转化为了判断 $n$ 是不是 $2$ 的幂次。方法很多,我的方法是转化为判断 $n=\text{lowbit}(n)$ 是否成立(怎么算 $\text{lowbit}$ 请参考你的树状数组,或者你可以枚举 $2$ 的幂次),时间复杂度 $\mathcal{O}(1)$(当然 $\mathcal{O}(\log n)$ 的做法也能接受)。

代码难度很低,请自行完成。

尾声

感谢您的阅读,若有不妥还请批评指正。

コメント

No comments yet.

コメントを投稿

「@mike」を使うと mike さんに言及でき、mike さんの名前がハイライトされます。文字「@」を入力したい場合は「@@」と入力してください。

「/kel」と入力すると絵文字「kel」が使用できます。