题意是这样的:有 $n$ 个人围成一圈,顺序排号。从第 $1$ 个人开始报数(从 $1$ 到 $3$),每报到 $3$ 的人就退出圈子,问最后留下的是原来第几号的那位。
你可以用指针的方法来解决这个问题。首先,你需要定义一个指针 $p$,初始指向第 $1$ 个人。然后,你可以用一个循环来模拟这个过程。在每一轮循环中,你可以把 $p$ 向前移动 $1$ 个位置,并检查 $p$ 指向的人是否满足条件(即,报数是否为 $3$)。如果满足条件,你就可以将 $p$ 向前移动 $2$ 个位置,并将这个人标记为“已退出”。否则,你就继续把 $p$ 向前移动 $1$ 个位置,继续检查下一个人。如果 $p$ 到达了圈子的末尾,就把 $p$ 移动到圈子的开头继续检查。
在每一轮循环结束时,你都要检查圈子中还有多少人没有被标记为“已退出”。如果只剩下一个人了,就说明找到了答案。否则,就继续进行下一轮循环。
代码如下:
``` int n; // 圈子中的人