Google Code Jam Foregone Solution 代码提交判错原因排查
Foregone Solution 代码判错原因排查
你的核心拆分逻辑(把每一位的4拆成3+1,其余位拆成原数字+0,保证两个加数都不含4且相加等于原数)是正确的,判错完全是输入输出格式不符合题目要求导致的,具体问题如下:
- 未按题目规则处理多测试用例:题目输入第一行是整数T,代表总共有T组待拆分的数字,后续T行才是具体的待拆分数值。你的代码直接读取第一行内容作为待拆分数字,既没有读取T值,也没有循环处理所有测试用例,遇到官方多组用例的测试集时,只会输出第一行T值的拆分结果,后续所有用例完全没有处理。
- 输出格式不符合规范:题目要求每组用例的输出必须严格遵循
Case #序号: A B的格式,你的代码直接输出两个拆分后的数字,缺少要求的Case前缀和对应编号,平台自动判题时会直接判定格式不匹配。 - 拆分出的第二个数存在前导零问题:比如输入14时,你的代码生成的b是字符串
01,带有前导零,不符合题目要求输出无前置零正整数的规则。
修正后可通过的代码
T = int(input()) for case_id in range(1, T + 1): num = input().strip() a = [] b = [] for c in num: if c == "4": a.append("3") b.append("1") else: a.append(c) b.append("0") res_a = "".join(a) res_b = "".join(b).lstrip("0") print(f"Case #{case_id}: {res_a} {res_b}")
针对官方样例输入:
3 4 940 4444
代码会输出完全匹配要求的结果:
Case #1: 3 1 Case #2: 930 10 Case #3: 3333 1111
内容的提问来源于stack exchange,提问作者Legend
相关产品推荐
相关产品推荐

