列表

详情


WY33. 计算糖果

描述

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

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-08-19

#include <stdio.h>
int main()	//2020.8.19 sx
{	
	int a,b,c,d,l,j,x;
	scanf("%d %d %d %d",&a,&b,&c,&d);
    if ((a+c)%2==1||(b+d)%2==1||(d-b)%2==1)
    {printf("No");
    return 0;}
	l=(a+c)/2;
	j=(b+d)/2;
	x=(d-b)/2;
	if(l>=0&&j>=0&&x>=0)
		printf("%d %d %d",l,j,x);
	else
		printf("No");
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 380KB, 提交时间: 2018-08-16

#include<stdio.h>
int main(void)
{
    int a,b,c,d,x,y,z;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    x=(a+c)/2;
    y=c-x;
    z=d-y;
    if(((x-y)==a)&((y-z)==b)&&((x+y)==c)&&((y+z)==d))
        printf("%d %d %d",x,y,z);
    else printf("No");
    return 0;
}

上一题