1. 程式人生 > >電腦耗電量 Python --貝殼2018秋招資料探勘工程師線上筆試題目

電腦耗電量 Python --貝殼2018秋招資料探勘工程師線上筆試題目

# -*- encoding:utf -8 -*-
'''
貝殼2018資料探勘工程師線上筆試題目(內推)
眾所周知,新款膝上型電腦都擁有自己的省電方案,現有某品牌膝上型電腦,正常工作狀態下耗電量為P1/min,當機主離開電腦
T1min時,電腦進入螢幕保護狀態,耗電量為P2/min,當電腦進入屏保狀態T2min後,電腦進入睡眠狀態,耗電量為P3/min。
已知電腦主人的一天有n段時間在使用電腦工作,即[l1, r1], [l2, r2],…, [ln, rn],在[rn-1, ln]期間是沒有操作電腦的,問
在[l1, rn]時間內,電腦共耗電多少瓦。
例:輸入
n,p1,p2,p3,T1,T2,其中,n表示使用電腦的時間段。
2 8 4 2 5 10
20 30
50 100
輸出:
570
解釋:
總耗電量 = 80 + 40 + 40 + 10 + 400 = 570W
20-30min: 80W = 10min * 8W/min
30-35min:40W = 5min * 8W/min
35-45min: 40W = 10min * 4W/min
45-50min: 10W = 5min * 2W/min
50-100min: 400W = 50 * 8W/min
'''
#思路:分段函式 s = raw_input() a = map(int,s.split())#存放輸入資料n,p1,p2,p3,T1,T2 n = a[0] b = [] res = 0 for i in range(n): s = raw_input() b.append(map(int,s.split())) if 1 <= n <= 100 and 0 <= a[1] and 0 <= a[2] and 0 <= a[3] and a[1] <= 100 and a[2]<=100 and a[3]<=100 and a[4]>=1 and
a[5] <= 60:#條件 if n == 1: res += (b[0][1] - b[0][0])*a[1]#只有一個時間段 else: res += (b[n - 1][1] - b[n - 1][0]) * a[1] for m in range(n-1): res += (b[m][1] - b[m][0]) * a[1] tempb1 = b[m] tempb2 = b[m+1] d = tempb2[0] - tempb1[1
] if d <= a[4]:#還沒到屏保時間 res += d*a[1] elif a[4] < d <= a[5]:#沒到睡眠時間 res = res + a[4]*a[1] + (d - a[4])*a[2] else:#超出睡眠時間 res = res + a[4] * a[1] + a[5] * a[2] + (d-a[5]-a[4] )* a[3] print res