今年的華為機試跟以往的有所不同,以往機試題側重於字符串處理,分數權重為:60、100、160。今年貌似改革了,題目都偏向數學邏輯類。
1、猴子吃桃
題目描述:
猴子第一天摘下若干個桃子,當即吃了一半還不過癮,又多吃了一個。第二天早上有獎剩下的桃子吃掉一般,又多吃了一個。以后每天早上都吃了前一天剩下的一般零一個。到第m天早上再吃時,只剩下一個桃子。求第一天共摘了多少?
輸入:mwield天數,即第m早上再想吃時,只剩下一個桃子。
輸出:第一天共摘了多少個桃子。
樣例輸入:2
樣例輸出:4
答題思路:
從第m天推起,第m天為1個;第m-1天為(1+1)*2個;第m-2天為……以此反推,for循環就可以搞定。
2、海灘上有多少個桃子
題目描述:
海灘上有一堆桃子,只猴子來分。第一只猴子把這堆桃平均分為m份,多了一個,把多的一個扔到海里,拿走了一份。第二只猴子把剩下的桃子又平均分為m份,多了一個,丟入海里,拿走了一份……第三第四……第m只猴字都這樣操作,請問海灘上原來最少有多少個桃子?
輸入:猴子個數m(3<=m<=9)
輸出:原來最少有多少個桃子
樣例輸入:3
樣例輸出:25
答題思路:
樓主是暴力求解的,所以效率比較低,i從第1開始,認為最后剩i個,再網上推算,能否被m整除……(最后有一個測試用例沒過,仔細想來應該是m=9時,溢出了,因為樓主是先乘后除的,所以問題應該出在這,以后牢記經驗了)。
回來后,差了一下猴子分桃這個經典案例,這位大神博客中有寫得比較詳細和巧妙:http://blog.csdn.net/hackbuteer1/article/details/6914395
經驗教訓:
要注意大數問題,像這種情況,long long比較保險一點,另外,做乘除時,能先除的先除,乘放在后面,避免溢出問題!!!!!
2、自動售貨系統
題目太長了,直接上圖好了

答題思路:
題目很長,但不算難,捋順了邏輯就好了。樓主后面也有一個測試用例沒過,真是傷感。猜測了一下,應該是當輸入太長了,自動換行時沒有讀全……
經驗教訓:
以后做題時一定要好好考慮邊界、異常等比較全面的測試用例!!!!
