標籤:
題目:
n只奶牛坐在一排,每個奶牛擁有ai只蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數相同,每一次你只能從一隻奶牛身上拿走恰好兩隻蘋果到另一隻奶牛身上,問最少需要移動多少次可以評分拼過,如果方案不存在,輸出-1。
輸入描述:
每個輸入包含一個測試案例,每個測試案例的第一行包含一個整數n(1<=n<=100),接下來的一行包括n個整數ai(1<=ai<=100)。
輸出描述:
輸出一行表示最少需要移動多少次可以平分蘋果,如果方案不存在則輸出-1。
輸出例子:
4
7 15 9 5
輸出例子:
3
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 int sum(const vector<int> &v) 7 { 8 vector<int>::size_type n=v.size(); 9 int sum=0;10 for(int i=0;i<n;i++)11 sum+=v[i];12 return sum;13 }14 15 int count(const vector<int> &v, const int n)16 {17 if(sum(v)%n)18 return -1;19 else20 {21 int ave=sum(v)/n;22 int cnt=0;23 for(int i=0;i<n;i++)24 {25 if(abs(v[i]-ave)%2)26 return -1;27 else28 {29 cnt=cnt+abs(v[i]-ave)/2;30 }31 }32 return cnt/2;33 }34 }35 36 int main()37 {38 int n;//n為奶牛個數39 vector<int> v;40 cin>>n;41 for(int i=0;i<n;i++)42 {43 int temp;44 cin>>temp;45 v.push_back(temp);46 }47 cout<<count(v,n);48 }
分蘋果 網易2017測試工程師編程題