小白的秋招記錄——機試編程題(第四範式)

1、超級區間和

現有一個長度爲N的數組a,下標範圍從0到N-1,給出Q組區間l[i], r[i],求和:

將最後的和除以1000000007的餘數作爲輸出

思路:用sum[i]存儲i前所有元素的和。爲了計算方便,另sum[0] = 0, sum[1] = a[0], sum[2] = a[0] + a[1]  ...

代碼:

import sys
n = int(sys.stdin.readline().strip())
a = map(int, sys.stdin.readline().strip().split())
q = int(sys.stdin.readline().strip())
s = [0] * (n+1)
res = 0

for i in range(1, n+1):
    s[i] += s[i-1] + a[i-1]

for i in range(q):
    x, y = map(int, sys.stdin.readline().strip().split())
    res += s[y+1] - s[x]
print res%1000000007

 

2、實現樸素貝葉斯分類器

樸素貝葉斯分類器假設在給定樣本label的情況下,樣本的不同特徵之間相互獨立。先用樸素貝葉斯分類器進行垃圾郵件識別,數據包含4個特徵。現有的訓練數據如下表:

代碼:

'''
輸入樣例:
14
1 1 1 0 1
1 1 1 1 1
2 1 1 0 0
3 2 1 0 0
3 3 0 0 0
3 3 0 1 1
2 3 0 1 0
1 2 1 0 1
1 3 0 0 0
3 2 0 0 0
1 2 0 0 0
2 2 1 1 0
2 1 0 0 0
3 2 1 1 1
5
1 1 0 0
1 1 1 0
1 2 1 0
2 1 0 1
2 2 1 1
輸出樣例:
0 1 1 0 0
'''


import sys
train = int(sys.stdin.readline().strip())
sum0 = 0
sum1 = 0
count1 = [0]*10
count0 = [0]*10
for i in range(train):
    a, b, c, d, e = map(int, sys.stdin.readline().strip().split())
    if e == 0:
        sum0 += 1
        count0[a-1] += 1
        count0[b+2] += 1
        count0[c+6] += 1
        count0[d+8] += 1
    else:
        sum1 += 1
        count1[a-1] += 1
        count1[b+2] += 1
        count1[c+6] += 1
        count1[d+8] += 1

test = int(sys.stdin.readline().strip())
res = []
for i in range(test):
    a, b, c, d = map(int, sys.stdin.readline().strip().split())

    #p0 = 1.0 * sum0 * count0[a-1] * count0[b+2] * count0[c+6] * count0[d+8] / (sum(count0[:3]) * sum(count0[3:6]) * sum(count0[6:8]) * sum(count0[8:10]))
    #p1 = 1.0 * sum1 * count1[a-1] * count1[b+2] * count1[c+6] * count1[d+8] / (sum(count1[:3]) * sum(count1[3:6]) * sum(count1[6:8]) * sum(count1[8:10]))
    p0 = 1.0 * count0[a-1] * count0[b+2] * count0[c+6] * count0[d+8] / (sum0*sum0*sum0)
    p1 = 1.0 * count1[a-1] * count1[b+2] * count1[c+6] * count1[d+8] / (sum1 * sum1 * sum1)
    #print p0, p1

    if p0 < p1:
        res.append(1)
    else:
        res.append(0)
print ' '.join(map(str, res))

 

 

 

昨晚的筆試時間和hulu的宣講時間衝突,但是小孩子纔要做選擇,我當然是  在宣講會上做筆試。。。

於是。。。。做着筆試聽着嘉賓講話,中間還退出半個小時去投簡歷,最後宣講結束了,筆試還沒做完,揹着書包、抱着電腦到處找地方筆試,我真的太難了。

編程題全A,選擇題做了1/3,蒙了1/3,還有1/3沒來得及蒙 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章