食物分配(思維)

鏈接: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");
		   }
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章