#中国电信##校招笔试#
非计算机专业,考计算机类的卷子。行测挺简单;专业知识跟编程我觉得难,因为我不是计算机专业的。专业知识有考机器学习,也有考计科的东西;编程第一题简单,第二题超时20%通过,第三题什么判断括号不会。接着学习吧,顺便把自己编程第二题的错误答案发一下抛砖引玉。

import sys

CHAR_MAP = {key: value for value, key in enumerate([
    "a", "b", "c", "d", "e", "f", "g", "h", 
    "i", "j", "k", "l", "m", "n", "o", "p",
    "q", "r", "s", "t", "u", "v", "w", "x",
    "y", "z"
], 1)}
CHAR_ARR = [(c_1, c_2, c_3) for c_1 in CHAR_MAP.keys() for c_2 in CHAR_MAP.keys() for c_3 in CHAR_MAP.keys()]

condition_1 = lambda v_1, v_2, v_3, n: v_1 + v_2 + v_3 == n
condition_2 = lambda v_1, v_2, v_3, D: abs(v_1 - v_2) in D and abs(v_2 - v_3) in D

def check(n: int, D: list[int]):
    result: str = None
    
    result_arr = []
    for c_1, c_2, c_3 in CHAR_ARR:
        v_1, v_2, v_3 = CHAR_MAP[c_1], CHAR_MAP[c_2], CHAR_MAP[c_3]
        if condition_1(v_1, v_2, v_3, n) and condition_2(v_1, v_2, v_3, D):
            result_arr.append((c_1, c_2, c_3))

    if len(result_arr) == 0:
        result = "NO"
    else:
        result_tup = min(result_arr, key=lambda tup: tup[0] + tup[1] + tup[2])
        result = result_tup[0] + result_tup[1] + result_tup[2]
    
    return result

if __name__ == "__main__":
    data_group_num = int(sys.stdin.readline())
    for _ in range(data_group_num):
        a = sys.stdin.readline().split()
        n, k = int(a[0]), int(a[1])
        D = list(map(lambda s: int(s), sys.stdin.readline().split()))
        print(check(n, D))
全部评论
python Python 3.13.7 (main, Aug 15 2025, 12:34:02) [GCC 15.2.1 20250813] on linux Type "help", "copyright", "credits" or "license" for more information. >>> ord('a') 97 >>> chr(97) 'a' 不需要CHAR_MAP这种东西。。 每次循环我觉得可以只去循环符合间隔的 而不是全部循环再筛选间隔 (你这样做 对于前两位已经不符合的 还是会把第三位跑完)
点赞 回复 分享
发布于 09-27 11:38 浙江

相关推荐

跨考计算机类,第一次写代码也能过一题,有没有机会啊
槛外呆燕:我感觉机会不大,大厂笔试做多了,感觉电信的真的太简单了,而且很多佬们会来卷三大运营商的岗位
投递中国电信等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务