【问题标题】:Codeforces not accepting my output even though it looks exactly the same?Codeforces 不接受我的输出,即使它看起来完全一样?
【发布时间】:2019-04-21 16:16:21
【问题描述】:

我正在尝试完成一个关于 codeforces 的低级问题,但即使我的解决方案通过了测试,它仍然会注册为错误。它一直说“错误的输出格式意外的文件结尾 - 预期为 int32”。这是什么意思?问题可以在https://codeforces.com/contest/1154/problem/A找到

#a+b = w
#a+c = x
#b+c = y
#a+b+c = z
def restore_numbers(w,x,y,z):
    biggest = max(w,y,z,x)
    if biggest - w > 0:
        num = biggest-w
    else:
        num = biggest
    if biggest - x > 0:
        num1 = biggest-x
    else:
        num1 = biggest
    if biggest -y > 0:
        num2 = biggest-y
    else:
        num2 = biggest
    if biggest - z > 0:
        num3 = biggest-z
    else:
        num3 = biggest-z
    arr = [num,num1,num2,num3]
    arr.sort()
    arr = arr[0:3]
    s = [str(i) for i in arr]
    res = (" ".join(s))
    return res 
print(restore_numbers(3,6,5,4))

应该发生的是,我解决了所有测试,但没有发生。

【问题讨论】:

标签: python int


【解决方案1】:

您的代码将在不同的输入下运行多次,因此您的代码必须适应能够读取各种输入。为了实现这一点,您必须读取输入的来源:stdin(标准输入)

在 python 中,您可以使用input()stdin 中读取数据,然后将这些值传递给您的restore_numbers(w,x,y,z)

但是,这些数字都在输入中的一行(例如3 6 5 4),因此您可以创建一个包含intmap 并从一行获取输入,然后使用split() 分隔使用默认分隔符(空格)的数字。然后你通过把它变成list 并单独访问每个数字以传递给restore_numbers(w,x,y,z) 函数。

一种解决方案是:

#a+b = w
#a+c = x
#b+c = y
#a+b+c = z
def restore_numbers(w,x,y,z):
  biggest = max(w,y,z,x)
  if biggest - w > 0:
      num = biggest-w
  else:
      num = biggest
  if biggest - x > 0:
      num1 = biggest-x
  else:
      num1 = biggest
  if biggest -y > 0:
      num2 = biggest-y
  else:
      num2 = biggest
  if biggest - z > 0:
      num3 = biggest-z
  else:
      num3 = biggest-z
  arr = [num,num1,num2,num3]
  arr.sort()
  arr = arr[0:3]
  s = [str(i) for i in arr]
  res = (" ".join(s))
  return res
nums = list(map(int, input().split()))
print(restore_numbers(nums[0],nums[1],nums[2],nums[3]))

现在代码可以跨各种输入多次运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2020-11-23
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2015-02-15
    相关资源
    最近更新 更多