Python寫法求解華為2016筆試真題第二題,

2021-09-17 18:19:19 字數 1556 閱讀 6301

時間限制:1秒

空間限制:65536k

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的**所在的檔名稱和行號。 

處理:1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)

2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;(如果檔名不同,而只是檔名的後16個字元和行號相同,也不要合併)

3.輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑

輸入描述:

一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。

檔案路徑為windows格式

如:e:\v1r2\product\fpgadrive.c 1325

輸出描述:

將所有的記錄統計並將結果輸出,格式:檔名**行數數目,乙個空格隔開,如: fpgadrive.c 1325 1 

結果根據數目從多到少排序,數目相同的情況下,按照輸入第一次出現順序排序。

如果超過8條記錄,則只輸出前8條記錄.

如果檔名的長度超過16個字元,則只輸出後16個字元

輸入例子1:

e:\v1r2\product\fpgadrive.c 1325
輸出例子1:

fpgadrive.c 1325 1
import sys

import collections

index = collections.ordereddict()

while true:

try:

s = sys.stdin.readline().split()

key_name = s[0].split('\\')[-1] + '@' + s[1] # 把檔名和行號作為key

if index.get(key_name, 0) == 0:

index[key_name] = 1

else:

# 相同的檔名和行號合併

index[key_name] = index.get(key_name, 0) + 1

except exception as e:

break

# 對dict排序,按照值從大到小排序

idx = sorted(index.items(), key=lambda x: x[1], reverse=true)

for i in range(len(idx)):

# 判斷是否大於16個字元

d = idx[i][0].split('@')

file_name = d[0]

line = d[1]

if len(file_name)>16:

file_name = file_name[-16:]

print('%s %s %s' %(file_name, line, idx[i][1]))

if i == 7:

break

華為oj 求解立方根

輸入引數的立方根 也是double型別 樣例輸入 216 樣例輸出 6.0 問題分析 牛頓迭代公式求解立方根,牛頓法求立方根的公式如下 2 y x y y 3 x是指被求立方根的數,y的初始值是x,後來不斷的進行更新,即new y 2 y x y y 3 include include define...

華為 OJ 求解立方根

計算乙個數字的立方根,不使用庫函式 詳細描述 介面說明 原型 public static double getcuberoot double input 輸入 double 待求解引數 返回值 double 輸入引數的立方根 輸入描述 待求解引數 double型別 輸出描述 輸入引數的立方根 也是d...

華為oj 求解立方根

詳細描述 原型 float getcuberoot float finput 輸入引數 float finput 待求解引數 輸出引數 指標指向的記憶體區域保證有效 無返回值 float 輸入引數的立方根 方法一 牛頓迭代法 include oj.h include using namespace ...