Codenation 面试经历 |在线测试
最近,Codenation 为软件开发工程师实习生举行了校园活动。
过程是:
1.在线测试
2. 电话面试
3. Skype 面试
校内在线测试于 2020 年 9 月 15 日举行。名为 CodeAgon 的校外编码挑战赛将于 9 月 28 日举行。所以,我只是想分享在线测试中提出的问题。
有三个问题:
第一个问题:
Alice 有一个随机数生成器。生成器生成一个从1到N的随机数。
现在 Alice 想知道在生成K个不同元素之前的预期转数。
帮助 Alice 找到这个模10 9 +7的值。
问题约束:
1<=K<=N<=10 5
输入格式:
输入由 2 个参数组成,按此顺序N=A和K=B 。
输出格式:
返回一个整数,期望值模10 9 +7 。
第二个问题:
给定一个大小为N*M的网格A ,2 个玩家轮流在上面玩游戏。
在每一轮中,玩家从任意行中选择一个元素子集,并用它们的适当除数替换它们中的每一个。
数 N 的真除数是 N 的任意除数,不等于 N。
无法移动的玩家输了。确定游戏的获胜者。
问题约束:
- 1<=N, M<=10 3
- 1<=A[i][j]<=10 6
输入格式:
唯一的参数行包含网格A 。
输出格式:
返回一个整数, 1或2 ,具体取决于哪个玩家获胜。
第三个问题:
给定一棵由 N 节点编号0到N-1的树。每个节点都有二进制值,即整数数组 A 表示的0或1 。
第i个节点的优点是2 i *A[i] 。树的总美是每个节点的美的总和。
阿曼很迷信,只会接受这棵树,但它的总美是2 N -1 或 0 。
他要求您使树可以接受,但您只能使用以下操作。
- 在每个操作中,选择任何节点X并调用flip(X) 。
Python
flip(X):
for (v: 0 to N-1):
if(all nodes in path from X to node v have same value)
A[v] = 1 - A[v]
找到使树可接受所需的最小操作数。
问题约束:
- 1<=N<=10 5
- 0<=A[i] <=1
- 0<=B[i][0], B[i][1]<=N-1
输入格式:
第一个参数是一个大小为 N 的整数数组 A,表示节点值。
第二个参数是一个大小为 (N-1)*2 的二维数组 B,其中i条边位于 B[i][0] 和 B[i][1] 节点之间
输出格式:
返回一个整数,表示所需的最小操作数。