You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

序列生成算法BUG排查:输入N=11时输出不符合预期

问题分析与修正

你的代码核心错误在于不必要的N -= 1操作,这直接破坏了原索引N的二进制位信息,导致无法正确对应序列构造过程中的替换逻辑。

序列构造逻辑回顾

序列的生成规则是每次将当前序列复制,把每个元素按0→1、1→2、2→0替换后追加到原序列末尾:

  • 初始:[0](长度1)
  • 第1次迭代:[0, 1](长度2)
  • 第2次迭代:[0, 1, 1, 2](长度4)
  • 第3次迭代:[0, 1, 1, 2, 1, 2, 2, 0](长度8)
  • 第4次迭代:[0,1,1,2,1,2,2,0,1,2,2,0,2,0,0,1](长度16)

观察可以发现:对于索引N,其二进制表示中每一个1位,都对应一次“进入后半段序列”的操作,每进入一次后半段,元素值就需要执行一次(值+1)%3的替换。最终结果等于二进制中1的个数对3取模。

错误原因

你的代码在循环开始时先执行N -=1,这会改变原N的二进制结构(比如N=11的二进制是1011,减1后变成1010),后续基于修改后的N进行位判断,自然无法正确统计需要替换的次数,导致结果错误。

修正后的代码

def find_nth_element(N):
    result = 0
    while N > 0:
        if N % 2 == 1:
            result = (result + 1) % 3
        N //= 2
    return result

import sys
for line in sys.stdin:
    N = int(line.strip())
    print(find_nth_element(N))

验证测试用例

  • 输入11(二进制1011,含3个1):3%3=0,返回0,符合预期。
  • 输入0:直接返回0,正确。
  • 输入7(二进制111,含3个1):返回0,符合序列第7位的值。

内容的提问来源于stack exchange,提问作者Ananya Saxena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:35:09