n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。
输入描述:
每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。
输出描述:
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。
输入例子:
4 7 15 9 5
输出例子:
3
代码如下:
1 import java.util.HashMap; 2 import java.util.Map; 3 import java.util.Scanner; 4 5 public class Main { 6 7 public static void main(String[] args) { 8 Scanner scanner=new Scanner(System.in); 9 int n=scanner.nextInt(); 10 int[] a=new int[n]; 11 int sum=0; 12 int avg=0; 13 int count=0; 14 boolean flag=true; 15 for(int i=0;i<n;i++) 16 { 17 a[i]=scanner.nextInt(); 18 sum+=a[i]; 19 } 20 if(sum%n!=0) 21 { 22 flag=false; 23 // System.out.print(-1); 24 } 25 else{ 26 avg=sum/n; 27 } 28 for(int i=0;i<n;i++) 29 {a[i]-=avg; 30 if(a[i]%2!=0) 31 { 32 flag=false; 33 // System.out.print(-1); 34 break; 35 } 36 } 37 for(int i=0;i<n;i++) 38 { 39 if(a[i]>0) 40 { 41 count+=a[i]/2; 42 } 43 44 } 45 if(!flag) 46 System.out.print(-1); 47 else 48 System.out.print(count); 49 } 50 51 }
浙公网安备 33010602011771号