小白的秋招記錄——機試編程題(平安科技)

 

1、把任意一個數a開b次方

輸入樣例:

1000 2

輸出樣例:

31.622777

 

代碼: 

# 二分法

import sys

line = sys.stdin.readline().strip().split()
a = float(line[0])
b = int(line[1])

low = 0
high = a
res = (low+high)/2.0

while abs(res**b-a) > 10**(-8):
    if res**b>a:
        high = res
    else:
        low = res
    res = (low+high)/2.0
print '%.6f'%res

# 感覺這題有兩個bug:
# 題目描述是輸出小數點後7位,但是輸出樣例是6位,輸出6位時全A
# 測試while循環的邊界條件時發現 > 10 ** (-4, -5, -6, -7)都能全A

 

2、有向圖中的環

給定一個有向圖,判定其中是否存在環

輸入描述:

一個用鄰接矩陣定義的有向圖,可以直接用json.loads()讀取,格式如下:
{"a": ["b", "c", "d"], "b": ["a", "d"], "c": ["d"]}
其中字典中的key是節點名,value是這個節點所有孩子的節點名
從標準輸入讀取一個str,使用json.loads()轉換爲dict, 如果用其他編程語言,需要考慮怎麼把string解析成json格式

輸出描述:

如果圖中有環,打印True到標準輸出
否則,打印False到標準輸出

輸入樣例:

{"a": ["b", "c"], "b":["e"], "c":["d"], "e": ["a"]}

輸出樣例:

True

我的其他測試樣例:{"a": ["b", "c", "d"], "b": ["a", "d"], "c": ["d"]};  {"a": ["b", "c", "e"], "b":["e"], "c":["d"]};  {"a": ["b", "c"], "b":["e"], "c":["d"], "e": ["a"]};  {"a": ["b"], "b": ["c"], "c":["a"]};  {"a": ["b"], "b": ["c"]}

代碼:

# 深度優先搜索

import json
import sys
from collections import defaultdict

def dfs(v, dic, visited):
    if visited[ord(v)-ord('a')]:
        res = True
    else:
        res = False
        visited[ord(v)-ord('a')] = 1

        if v in keys:
            temp = dic[v]
            for i in temp:
                res = dfs(i, dic, visited)
                return res
        visited[ord(v)-ord('a')] = 0
    return res

global keys
line = sys.stdin.readline().strip()
dic = json.loads(line)
keys = dic.keys()
visited = [0] * 26
res = dfs(keys[0], dic, visited)
print res

很慚愧筆試的時候沒有寫出來,通過暴力 print True A了50%

剛剛自己測了五組數據都通過了,但是不知道還有沒有其他的問題,大佬們如果發現有bug一定要告訴我呀,小白感激不盡(默認輸入爲連通圖)

 

3、分糖果

 

 代碼:

import sys
n = int(sys.stdin.readline().strip())
a = map(int, sys.stdin.readline().strip().split())
res = 0
if sum(a)%n != 0:
    res = -1
else:
    ave = sum(a)/n
    for i in a:
        temp = i - ave
        if abs(temp)%2:
            res = -1
            break
        elif temp>0:
            res += temp/2
print res

 

 

 

 

總結:一個半小時,20道單選,3道編程,編程一共A了2.5題,第二題沒有OJ測試過,所以如果大佬們發現了bug一定要告訴我呀 (from: 一個對自己沒有信心的小白)

 

 

 

 

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