360实习生笔试

刚刚结束360实习生的笔试。
额,一团糟。
客观题(即选择题部分)主要考python和C++,两者三七开吧,很多都是问C++程序的输出结果,然后再穿插一点数学计算,比如矩阵相乘,伴随阵等线性代数的内容,还有概率论,还掺杂有机器学习的基础题(基本都是概念,非参数算法,梯度下降的决定因素等)。
总体来说比较基础,但奈何本人C++忘得差不多了,所以答得很吃力。
然后是三道编程题。因为客观题答完还有80分钟左右,所以几乎是争分夺秒去做编程题的。以下内容就全凭记忆了。

题目1

吃鸡游戏,组队可以1人/队,2人/队,3人/队,4人/队,可以自由组队,其他说明可以忽略,对做题没有影响。然后问,现有A个1人队,B个2人队,C个3人队,D个4人队,那么最多可以组成几个4人队?

要求:
1.第一行输入一个整数T,表示需要处理的组的数量。
2.第二行输入4个数据,分别代表A B C D,输入T组

样例输入
4
1 2 3 4
4 3 2 1
1 2 2 1
0 2 0 1

样例输出
6(注意不是7是6,我也很奇怪)
5
3
2

这。。貌似过于简单了,只需要把总人数计算出来,再除以4取整就行了。

import sys
numbers = []
total = []


def cal_team(t: int):
    for _ in range(t):
        numbers.append(input().split())
    # print(numbers)  # 每个元素就是一行的输入
    for each_list in numbers:
        res = 0
        for each in range(len(each_list)-1):
            res += int(each+1) * (int(each_list[each]))
        total.append(res // 4 + int(each_list[-1]))

    for cell in total:
        sys.stdout.write(str(cell) + '\n')


T = int(input())
cal_team(T)

因为4人/队的不需要重组,因此只需要把前三种的情况计算出来就行了。奈何赛码平台编译器矫情的要死,各种限制,必须使用sys.stdout.write()输出结果。所以就有了上面的代码。
还有,本次提交未通过,反馈是回答错误,但我找了半天也想不到还有哪里碰到了它的禁区。需要说明的是,样例输入为1234的输出为6,不是7,我也很奇怪,但后面输入得到的结果又是正确的,只能按照自己想的来了,或许就是这个错误导致的回答错误。

题目2

列表重排。对一个N个元素的列表进行M次操作,重新排序。

要求:
第一行输入N和M,分别表示数组的长度和操作的次数。
第二行输入列表数据,N个。
接着是M行数据,每行都只有两个数t,x
t取值为{0, 1},为0则是升序;为1则是降序。
x表示对列表的前X个数进行排序操作。

样例输入
4 2
1 2 4 3
1 3
0 2

样例输出
2 4 1 3

看着也蛮简单的。输入数据就不废话了,那么每次操作就将该数组的前x个元素取出,进行排序,之后再赋值回去,就能得到结果了。

import sys
numbers = list()
line_1 = list()
t_x = list()
tmp = list()
new = list()

line_1.append(input().split())  # 第一行输入 N,M
numbers.append(input().split())   # 输入N个数据
for each in numbers[0]:
    tmp.append(int(each))
# 仍然是str类型的
N, M = line_1[0][0], line_1[0][1]

for i in range(int(M)):
    t_x.append(input().split())  # 输入t,x
    t, x = int(t_x[i][0]), int(t_x[i][1])
    new = tmp[:x]
    if t == 0:
        new.sort()
        for e in new:
            tmp[new.index(e)] = e
        # 前x个数升序
    if t == 1:
        new.sort(reverse=True)
        for e in new:
            tmp[new.index(e)] = e
        # x个数降序
for eve in tmp:
    sys.stdout.write(str(eve) + ' ')

其中最烦的就是类型转换了,输入的是str类型,处理的时候要转换成int类型,输出还要转换成str类型。经验证,不能采用数组切片然后排序的方法直接更改,所以还需要重新定义一个新的列表,用于储存,最后再赋值回去。
这个倒是获得了一次AC,感动。

题目3

emmm.调试题目1的时候浪费太长时间了,死磕编程规则,最后没来得及看~

真的是一团糟,估计是凉了,再接着努力学习吧。

猜你喜欢

转载自blog.csdn.net/HollyRan/article/details/89005663