1. 程式人生 > >分蘋果——網易2017內推筆試程式設計題

分蘋果——網易2017內推筆試程式設計題

連結:https://www.nowcoder.com/questionTerminal/a174820de48147d489f64103af152709?source=relative
來源:牛客網

n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能從一隻奶牛身上拿走恰好兩個蘋果到另一個奶牛上,問最少需要移動多少次可以平分蘋果,如果方案不存在輸出 -1。 


分析:這應該是一道數學題。只需要考慮兩個條件:

  1. 蘋果總數一定要被奶牛數量整除,否則不可能達到最後蘋果數相同的條件。
  2. 因為一次只能轉移2個蘋果,則可以通過轉移多的給少的達到目的。但只有多的數量與平均數之差為2的整數倍才可以通過一次轉移2個蘋果來達到擁有相同蘋果數的目的。轉移的次數就等於把多的轉給少的一次轉2個所需要的次數。
package Math;

import java.util.Scanner;

public class fenpingguo {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            int[] num=new int[n];
            for(int i=0;i<n;i++)
                num[i]=scanner.nextInt();
            System.out.println(avg(num));
        }
    }

    public static int avg(int[] num){
        int avg=0;
        int sum=0;
        int len=num.length;
        for(int i=0;i<len;i++){
            sum+=num[i];
        }
        avg=sum/len;
        if(sum%len!=0)  //總蘋果數不能被人數整除
            return -1;
        for(int i=0;i<len;i++){
            int abs=Math.abs(num[i]-avg);  //不能通過一次轉移2個蘋果來達到平均數,即不管怎麼分都不會到平均數
            if(abs%2!=0){
                return -1;
            }
        }
        int count=0;
        for(int i=0;i<len;i++){
            if(num[i]>avg){
                count+=(num[i]-avg)/2;
            }
        }
        return count;
    }
}

相關推薦

蘋果——2017筆試程式設計

連結:https://www.nowcoder.com/questionTerminal/a174820de48147d489f64103af152709?source=relative來源:牛客網n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果

蘋果----2017筆試程式設計合集(一)

[程式設計題] 分蘋果 n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能從一隻奶牛身上拿走恰好兩個蘋果到另一個奶牛

2017筆試程式設計合集(二)(第三) 不要二

[程式設計題] 不要二 二貨小易有一個W*H的網格盒子,網格的行編號為0~H-1,網格的列編號為0~W-1。每個格子至多可以放一塊蛋糕,任意兩塊蛋糕的歐幾里得距離不能等於2。 對於兩個格子座標

2018筆試程式設計

題目1 題目描述 小易覺得高數課太無聊了,決定睡覺。不過他對課上的一些內容挺感興趣,所以希望老師講到有趣的地方的時候叫醒他一下。你知道了小易對一堂課每分鐘知識點的感興趣程度,並以分數量化,以及他在這堂課上每分鐘是否會睡著,你可以叫醒他一次,這會使得他在接

2017筆試1:蘋果 [python]

''' [程式設計題] 分蘋果 時間限制:1秒 空間限制:32768K n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果, 使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能

2017筆試題目

http://www.nowcoder.com/discuss/6959?type=3&order=0&pos=2&page=1 [程式設計題] 幸運的袋子 一個袋子裡面有n個球,每個球上面都有一個號碼(擁有相同號碼的球是無區別的)。如

2017筆試程式設計——田地

題目描述: 牛牛和 15 個朋友來玩打土豪分田地的遊戲,牛牛決定讓你來分田地,地主的田地可以看成是一個矩形,每個位置有一個價值。分割田地的方法是橫豎各切三刀,分成 16 份,作為領導幹部,牛牛總是會選擇其中總價值最小的一份田地, 作為牛牛最好的朋友,你希望牛牛取得的田地的價值和儘可能大,你知道這個值最大

2017春招筆試編程集合——餅幹

out color div nbsp -1 pre new har nco 參考:http://blog.csdn.net/wwe4023/article/details/70171648的內容 // import java.util.*; public class M

2016校招筆試程式設計

牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。 輸入描述: 每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文字母和空格,輸入檔案不超過 50

2017筆試題

有 n 個學生站成一排,每個學生有一個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?  輸入描述: 每個輸入包含 1 個測試用例。每個測試資料的第一行包含一個整

2017 [程式設計]小喜歡的數列

[程式設計題]小易喜歡的數列 熱度指數:1954時間限制:1秒空間限制:32768K 小易非常喜歡擁有以下性質的數列: 1、數列的長度為n 2、數列中的每個數都在1到k之間(包括1和k) 3、

2018筆試程式設計(一)

萌新最近做了一下2018網易的內推程式設計題集合,要求3個小時解決八道程式設計題,本萌新兩個小時做了6道題,剩下兩道題直接放棄了,感覺難度不大,沒有具體涉及到什麼演算法,除了動態規劃。 下面對做題的思路以及過程做一個簡單的記錄: 1.彩色的磚塊: 一

2017春招筆試編程集合(10)——小易記單詞

bsp math 字符串 array 如果 new 是否 數據 作用 小易參與了一個記單詞的小遊戲。遊戲開始系統提供了m個不同的單詞,小易記憶一段時間之後需要在紙上寫出他記住的單詞。小易一共寫出了n個他能記住的單詞,如果小易寫出的單詞是在系統提供的,將獲得這個單詞長度的平方

2017春招筆試編程集合(8)——奇怪的表達式求值

next ann new switch 運算 ase 自己 lin pri 常規的表達式求值,我們都會根據計算的優先級來計算。比如*/的優先級就高於+-。但是小易所生活的世界的表達式規則很簡單,從左往右依次計算即可,而且小易所在的世界沒有除法,意味著表達式中沒有/,只有(+

2017春招筆試編程集合(7)——集合

復雜 bsp span 問題 args 一個 add port code 小易最近在數學課上學習到了集合的概念,集合有三個特征:1.確定性 2.互異性 3.無序性.小易的老師給了小易這樣一個集合:S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z }需要根據給

2017春招筆試程式設計集合題解

前言 想想已經有一年多沒有接觸演算法題了,忙活了一年多沒什麼用的東西,才陡然發現自己竟然就要畢業了,然而審視了下自己的水平估計還達不到大一的程度,甚是驚恐。於是下定決心開始刷一點題,打好基本功。正好有同學在做網易筆試題的時候來向我問問題,我看了看有12道,好像也不多,於是就順便刷了刷。本

2017春招筆試編程集合題解

平分 數組 如果 方案 順序 clu 不同 std 編程題 1、雙核處理 題目 一種雙核CPU的兩個核能夠同時的處理任務,現在有n個已知數據量的任務需要交給CPU處理,假設已知CPU的每個核1秒可以處理1kb,每個核同時只能處理一項任務。n個任務可以按照任意順序放入CPU進

2018春招筆試程式設計——nk數對

題目描述:牛牛以前在老師那裡得到了一個正整數數對(x, y), 牛牛忘記他們具體是多少了。 但是牛牛記得老師告訴過他x和y均不大於n, 並且x除以y的餘數大於等於k。 牛牛希望你能幫他計算一共有多少個可能的數對。首先用兩個for迴圈來暴力求解是可以得到結果,但是時

2018年計算機視覺實習生筆試程式設計

牛牛總是睡過頭,所以他定了很多鬧鐘,只有在鬧鐘響的時候他才會醒過來並且決定起不起床。從他起床算起他需要X分鐘到達教室,上課時間為當天的A時B分,請問他最晚可以什麼時間起床輸入描述:每個輸入包含一個測試用例。 每個測試用例的第一行包含一個正整數,表示鬧鐘的數量N(N<=1

(2018校招筆試)[程式設計] 相反數

題目: 為了得到一個數的"相反數",我們將這個數的數字順序顛倒,然後再加上原先的數得到"相反數"。例如,為了得到1325的"相反數",首先我們將該數的數字順序顛倒,我們得到5231,之後再加上原先的數