第8题——计算糖果

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
输出例子1:
2 1 3

我的代码:
import java.util.*;//Scanner是util包下的
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int M=sc.nextInt();
            int N=sc.nextInt();
            int X=sc.nextInt();
            int Y=sc.nextInt();
            double m=(double)M;//int型的数直接相除得到的是整数
            double n=(double)N;
            double x=(double)X;
            double y=(double)Y;
            double a=(m+x)/2; //解方程组
            double b=(n+y)/2;
            double c=(y-n)/2;
            int A=(int)a;
            int B=(int)b;
            int C=(int)c;
            if((A==a&&B==b&&C==c)&&(A>=0&&B>=0&&C>=0)){//判断是否为自然数
                System.out.println(A+" "+B+" "+C);
            }else{
                System.out.println("No");
            }
        }
        sc.close();
    }
}

参考:https://www.nowcoder.com/test/question/done?tid=9685251&qid=46579#summary

// 要求ABC都为整数
// 注意多了一个约束条件,即四个式子解3个未知数,所以还要确定满不满足A+B==n3
 
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n1 = in.nextInt();
        int n2 = in.nextInt();
        int n3 = in.nextInt();
        int n4 = in.nextInt();
        int A = (n1+n3)/2;
        int B = (n2+n4)/2;
        int C = B-n2;
        if((n1+n3)%2==0&&(n2+n4)%2==0&&(A+B==n3)){
            System.out.println(A+" "+B+" "+C);
        }else{
            System.out.println("No");
        }
    }
}

 改进:

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n1 = in.nextInt();
        int n2 = in.nextInt();
        int n3 = in.nextInt();
        int n4 = in.nextInt();
        int A = (n1+n3)/2;//用前3个方程计算出A B C,需要验证ABC是否为整数,且是否满足第4个方程
        int B = A-n1;
        int C = A-n1-n2;
        if((n1+n3)%2==0&&(B+C==n4)){//因为A是除法得到的,若A为整数,则BC也为整数,所以只需验证A是不是整数
            System.out.println(A+" "+B+" "+C);
        }else{
            System.out.println("No");
        }
    }
}

 

posted @ 2017-08-09 11:35  CYTing  阅读(172)  评论(0编辑  收藏  举报