食物分配(思维)

链接:https://ac.nowcoder.com/acm/contest/2720/B
来源:牛客网
 

题目描述

众所周知,ICPC是一项团队赛事,需要三人合力协作完成。比赛的主办方会向参赛选手发放参赛服和食物,为了有备无患,准备的食物总是比参赛选手的总数要多一些。
假设你是一名ICPC教练,现在正带队参加一场ICPC区域赛。因为你们是最后一支注册的队伍而准备的食物还有剩余,因此你的队伍得到了4份食物(教练的食物是单独计算的)。因为工作人员的疏忽,每一份食物的分量不是均等的。如果恰好每人分到一份食物,那么没有人会抱怨。但现在多出了一份食物,所以你的队员希望每个人分到的食物分量是均等的。
一份食物只能被分给一个人,同时为了节约粮食,你不能浪费食物。如果没有方法把这四份食物分给三名队员并不使队员们产生抱怨,你只能将这份食物捐赠给慈善机构。
请判断是否存在一种方法可以将四份食物分给三名队员,每人获得的食物分量相等。

输入描述:

第一行一个整数T(1≤T≤100)T(1\le T \le 100)T(1≤T≤100),表示数据的组数。
接下来一共T行,第i+1(1≤i≤T)i+1(1 \le i \le T)i+1(1≤i≤T)行表示第i组数据,每行四个整数A,B,C,D(1≤A,B,C,D≤20000)A,B,C,D(1 \le A,B,C,D \le 20000)A,B,C,D(1≤A,B,C,D≤20000),分别表示四份食物的分量。

输出描述:

输出T行,第i行对应输入的第i组数据,每行一个整数。如果能将四份食物分给三个人且每人得到的食物分量相同,则输出每人得到的食物的分量。否则输出-1。

示例1

输入

复制

2
1 2 3 3
1 1 3 3

输出

复制

3
-1

说明

对于第一组数据,一名队员可以分到分量为1和分量为2的食物,另外两名队员则分到分量为3的食物。
对于第二组数据,没有一种划分可以使得三名队员获得的食物分量相同。

作者:王清楚
链接:https://ac.nowcoder.com/discuss/351408
来源:牛客网
思路:

    给定四个正整数,判断这四个正整数能否被恰好划分成三组,每一组数的和相等

   设这四个数分别为 A,B,C,D(A≤B≤C≤D),如果满足划分条件,则必然有 A+B=C 且 C=D,因此只需要对这四个数排序后判断即可。

代码:
    

import java.util.Arrays;
import java.util.Scanner;

public class Main {
      public static void main(String[] args) {
		   Scanner scan=new Scanner(System.in);
		   int t=scan.nextInt();
		   while(t-->0){
			   int a[]=new int[4];
			   for(int i=0;i<4;i++)
				   a[i]=scan.nextInt();
			   Arrays.sort(a);
			   if(a[0]+a[1]==a[2] && a[2]==a[3])
				   System.out.println(a[3]);
			   else System.out.println("-1");
		   }
	}
}

 

你可能感兴趣的:(思维)