1、汽水瓶
時間限制:1秒
空間限制:32768K
有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?
輸入描述:
輸入文件最多包含10組測試數據,每個數據佔一行,僅包含一個正整數n(1<=n<=100),表示小張手上的空汽水瓶數。n=0表示輸入結束,你的程序不應當處理這一行。
輸出描述:
對於每組測試數據,輸出一行,表示最多可以喝的汽水瓶數。如果一瓶也喝不到,輸出0。
輸入例子:
3
10
81
0
輸出例子:
1
5
40
代碼:
#遞歸
import sys
def get_total_drinks(total, empty):
if empty < 2: #如果有0或1個空瓶,不能兌換飲料
return total
if empty in [2,3]: #如果有2或3個空瓶,可以兌換一瓶
return total+1
new = empty / 3
return get_total_drinks(total+new, empty-3*new+new) #目前的總飲料數,總空瓶數
try:
while True:
line = sys.stdin.readline().strip()
if line == '0':
break
empty = int(line)
total = 0
print get_total_drinks(total,empty)
except:
pass
2、明明的隨機數
時間限制:1秒
空間限制:32768K
明明想在學校中請一些同學一起做一項問卷調查,爲了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應着不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作(同一個測試用例裏可能會有多組數據,希望大家能正確處理)。
Input Param
n 輸入隨機數的個數
inputArray n個隨機整數組成的數組
Return Value
OutputArray 輸出處理後的隨機整數
注:測試用例保證輸入參數的正確性,答題者無需驗證。測試用例不止一組。
輸入描述:
輸入多行,先輸入隨機整數的個數,再輸入相應個數的整數
輸出描述:
返回多行,處理後的結果
輸入例子1:
11
10
20
40
32
67
40
20
89
300
400
15
輸出例子1:
10
15
20
32
40
67
89
300
400
代碼:
#輸入到list
#list轉化爲集合
#集合排序,輸出
import sys
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
num = int(line)
l= []
for i in range(num):
l.append(int(sys.stdin.readline().strip()))
s = set(l)
sort_s = sorted(s)
for i in sort_s:
print i
except:
pass
3、進制轉換
時間限制:1秒
空間限制:32768K
寫出一個程序,接受一個十六進制的數值字符串,輸出該數值的十進制字符串。(多組同時輸入 )
輸入描述:
輸入一個十六進制的數值字符串。
輸出描述:
輸出該數值的十進制字符串。
輸入例子1:
0xA
輸出例子1:
10
代碼:
import sys
def get_ten(s):
base = 1
value = 0
for i in s[::-1]:
if ord(i) - ord('0') < 10: #該位爲數組
value += int(i)*base
else: #該位位字母
value += (10 + ord(i) - ord('A'))*base
base *= 16
print value
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
get_ten(line[2:])
except:
pass
評價:
華爲的題確實是刷的題中最簡單的題,感覺三道題都很基礎,沒有什麼特別的套路,但是一個小時依舊做不完三道,我目前好像只能做兩道。。。。。
編程語言: python2.7.3
python2的輸入輸出太噁心了,賊複雜,稍微簡寫一點就報錯。。。。。。