OI题目求助, 为什么WA

creepebucket 2026-08-28 11:44 1



import sys

a, b, c = [int(x) for x in input().strip().split(' ')]
d = b - a + 1
l = [ord(x) - ord('a') - a + 1 for x in input()]
def next_num():
p = -1
try:
while l[p] == d + p:
p -= 1
except Exception:
sys.exit()
l[p] += 1
m = l[p] - p
while p != -1:
p += 1
l[p] = m + p
for i in range(5):
next_num()
print(''.join([chr(x + a - 1 + ord('a')) for x in l]))

样例是对的, 给我判的全WA, 看有没有有权限的佬能好心帮我下载一下数据

最新回复 (12)
  • 空喵 08-28 11:52
    2

    首先题目是:



    对于从文件读入的一个 Jam 数字,按顺序输出紧接在后面的 5 个 Jam 数字,如果后面没有那么多 Jam 数字,那么有几个就输出几个。



    代码里面:



    for i in range(5):

    next_num()



    执行了五次,因此必然会越界。


    越界报WA是因为python的负下标代表从后往前数的个数,比如l[-1]代表l数组从后往前数第一个。

  • creepebucket 楼主 08-28 11:56
    3

    但是越界长这样


    /home/creepebucket/桌面/临时文件/python/.venv/bin/python /home/creepebucket/桌面/临时文件/python/main.py 
    1 4 3
    abc
    Traceback (most recent call last):
    File "/home/creepebucket/桌面/临时文件/python/main.py", line 14, in <module>
    next_num()
    File "/home/creepebucket/桌面/临时文件/python/main.py", line 6, in next_num
    while l[p] == d + p:
    ~^^^
    IndexError: list index out of range
    abd
    acd
    bcd

    进程已结束,退出代码为 1

    洛谷会算成RE啊


  • Aflydream 08-28 11:57
    4

    呃啊!居然战里还有洛谷嘛www吓哭了,afo之后就没碰过洛谷了



    话说我dev c++都删了


  • creepebucket 楼主 08-28 11:58
    5

    我妈要我打OI来着, 小学之后就没打了 最近在做黄题复建

  • lanvent 08-28 12:00
    6

    缺少了“已经没有下一个 Jam 数字”的判断

  • Aflydream 08-28 12:00
    7

    我去年因为被招进学科竞赛就没打了 CSP都没来得及去参加

  • Aflydream 08-28 12:02
    8

    我看了一下,没有处理jam 数字不足5个的情况

  • creepebucket 楼主 08-28 12:02
    9

    @lanvent 试着加过处理, 还是WA 有点诡异了

    编辑了一下 现在的代码加入了错误处理

  • Aflydream 08-28 12:07
    10

    加一个 data=sys.stdin.read().split()试试,可能是格式问题

  • Aflydream 08-28 12:10
    11

    没想到还有蓝名

    P1061_1.out.txt (35 字节)

    P1061_1.in.txt (17 字节)

  • 空喵 08-28 12:10
    12

    洛谷第一个测评点的数据,佬可以看看是哪的问题

    P1061_1.out.txt (35 字节)

    P1061_1.in.txt (17 字节)

    我测下来是不会越界,因为佬的代码只有到了遇到最后一个jam数字的时候,才会越界(也就是l[-6]的情况)

  • creepebucket 楼主 08-28 12:21
    13



    ^-^… 第一个点好像是对的, 我没看出错哪

* 帖子来源Linux.do
返回