📜  Codenation 面试经历 |在线测试

📅  最后修改于: 2022-05-13 01:58:40.548000             🧑  作者: Mango

Codenation 面试经历 |在线测试

最近,Codenation 为软件开发工程师实习生举行了校园活动。

过程是:

1.在线测试

2. 电话面试

3. Skype 面试

校内在线测试于 2020 年 9 月 15 日举行。名为 CodeAgon 的校外编码挑战赛将于 9 月 28 日举行。所以,我只是想分享在线测试中提出的问题。

三个问题:

第一个问题:

Alice 有一个随机数生成器。生成器生成一个从1N的随机数。

现在 Alice 想知道在生成K个不同元素之前的预期转数。

帮助 Alice 找到这个模10 9 +7的值。

问题约束:

1<=K<=N<=10 5

输入格式:

输入由 2 个参数组成,按此顺序N=AK=B

输出格式:

返回一个整数,期望值模10 9 +7

第二个问题:

给定一个大小为N*M的网格A ,2 个玩家轮流在上面玩游戏。

在每一轮中,玩家从任意行中选择一个元素子集,并用它们的适当除数替换它们中的每一个。

数 N 的真除数是 N 的任意除数,不等于 N。

无法移动的玩家输了。确定游戏的获胜者。

问题约束:

  • 1<=N, M<=10 3
  • 1<=A[i][j]<=10 6

输入格式:

唯一的参数行包含网格A

输出格式:

返回一个整数, 12 ,具体取决于哪个玩家获胜。

第三个问题:

给定一棵由 N 节点编号0N-1的树。每个节点都有二进制值,即整数数组 A 表示的01

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] 节点之间

输出格式:

返回一个整数,表示所需的最小操作数。