首页 > 试题广场 >

计算糖果

[编程题]计算糖果
  • 热度指数:26294 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。

输入描述:
输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。


输出描述:
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
示例1

输入

1 -2 3 4

输出

2 1 3
import sys
n1,n2,n3,n4 = map(int,sys.stdin.readline().strip().split())
x, y = n1+n3, n2+n4
if x % 2== 0 and y % 2 == 0 :
    A = x//2
    B = y//2
    C = B-n2
    if A - B == n1:
        print(A,B,C,sep=' ')
    else:
        print('No')
else:
    print('No')

发表于 2018-09-30 22:57:13 回复(0)
公式计算,判断算出的数是不是大于0整数
Num = list(map(int,input().split()))
A = (Num[0] + Num[2])/2
B = (Num[1]+Num[3])/2
C = Num[3] - B
if A == int(A) and B == int(B) and C == int(C) and A >= 0 and B >= 0 and C >= 0:
    print(int(A),int(B),int(C))
else:
    print('No')

发表于 2018-07-11 22:55:10 回复(0)
import sys
numbers=list(map(int,sys.stdin.readline().strip().split()))

a,b,c,d=numbers
A=(a+c)/2
B=(b+d)/2
C=B-b
if A<0 or B<0 or C<0:
    print('No')
elif A!=B+a:
    print('No')
else:
    print('%d %d %d'%(A,B,C))

发表于 2018-05-01 16:51:40 回复(0)

python四行解法

這道題很簡單,不過要注意算出來的值不能爲負數,不能是小數。

i1, i2, i3, i4 = map(int, input().split())
a = (i1 + i3) // 2 if (i1 + i3) % 2 == 0 and (i1 + i3) >= 0 else None
b = (i2 + i4) // 2 if (i2 + i4) % 2 == 0 and (i2 + i4) >= 0 else None
print(" ".join(map(str, [a, b, i4 - b])) if isinstance(a, int) and isinstance(b, int) else "No")
编辑于 2018-04-13 10:04:26 回复(0)
python:就是比较简单的和差公式方法,比较需要 注意的是,B的求法要再用一种方法验证,只用三个是不行的,如果ABC满足 条件加入列表时我又加入了空格,方便 直接输出输入用的是map函数,
def Number(n1,n2,n3,n4):
    ls=[]
    A=(n1+n3)/2
    B1=(n3-n1)/2
    B2=(n2+n4)/2
    C=(n4-n2)/2
    if A>=0 and A==int(A):
        ls.append(int(A))
        ls.append(" ")
    if B1>=0 and B1==int(B1) and B1==int(B2):
        ls.append(int(B1))
        ls.append(" ")
    if C>=0 and C==int(C):
        ls.append(int(C))
    if len(ls)==5:
        return ls
    else:
        return "No"
a,b,c,d= map(int,input().split())
b=Number(a,b,c,d)
if b!='No':
    for i  in b:
        print(i,end="")
else:
    print(b)

发表于 2017-10-25 10:01:44 回复(0)
import sys
num1, num2, num3, num4 = list(map(int, sys.stdin.readline().split()))
a1 = num1+(num2+num4)//2
a2 = (num2 + num4)//2
a3 = (num4-num2)//2
if a1 - a2 == num1 and a2 -a3 == num2 and a1 + a2 == num3 and a2 + a3 == num4:
    print(a1,a2,a3)
else:
    print("No")
发表于 2017-09-02 12:00:44 回复(0)