Intern2 - 稳博

前段时间投了稳博的Quant实习生,今天总结一下笔试题

Q1

这道题的思路分为三步,1、对大小为m的行进行整数分拆;2、对每一行可能的分拆情况进行前m’项求和,得到每一行的缝隙坐标;3、对n行进行判断,不能出现某一缝隙坐标出现n次的情况

有序分拆

关于整数分拆,这篇文章给出了很好的解答,但是需要注意的是,文章中的整数分拆是无序分拆,即

1
3 = 1 + 2; 3 = 2 + 1

这两种情况在无序分拆中是同一种情况,而在本题中需要考虑有序分拆

求和

有序分拆之后,求出缝隙坐标就比较容易了

1
2
3
4
5
6
7
8
for partition in partition_types:
sum_partition = []
if len(partition) == 1:
sum_partition.append('0')
else:
for i in range(1, len(partition)):
sum_partition.append(str(sum(partition[:i])))
sum_partition.append(''.join(sum_partition))

得到每一行的缝隙坐标之后,还需要根据行数进行排列组合

1
combinations = [''.join(x) for x in itertools.product(*[sum_partitions] * rows)]

判断缝隙

之后就是判断排列组合中的是否出现某一个缝隙坐标出现的次数等于行数了,需要把0排除在外

Q2

瞎画一通…

Q3

考虑原式与下式的和,为整数

1
$ (1-\sqrt{2})^2021 $

而上式是一个很接近于0的负数,所以原式的第200位是0

暑期总结

到目前为止,暑期拿到了易方达的数据分析、稳博和博益安盈的Quant

华夏基金的笔试今天要做一下,还有东方红资管的行业研究等着二面。

暑期实习这一趟下来算是对接下来的秋招做了一次演练,虽然拿了一些offer,但是感觉还是很慌,太卷了,现在真的觉得当老师蛮好的,然鹅教资面试感觉有点凉凉,太紧张了,前一天也没睡好,考完教资面试回去直接病了一周,未来还是打算躺平了,小命最重要。