電腦耗電量 Python --貝殼2018秋招資料探勘工程師線上筆試題目
阿新 • • 發佈:2019-01-02
# -*- 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