Recently, oncampus drive was held for Codenation for Software Development Engineer Intern.
The process was:
1. Online Test
2. Telephonic Interview
3. Skype Interview
Online test for oncampus was held on September 15th 2020. The offcampus coding challenge known as CodeAgon for the hiring of same position is going to be held on 28th of September. So, I just wanted to share questions asked in online test.
There were three questions:
First Question:
Alice has got a Random Number Generator. The generator generates a random number from 1 to N.
Now Alice wants to know the expected number of turns until K distinct elements are generated.
Help Alice find this value modulo 109+7.
Problem Constraints:
1<=K<=N<=105
Input format:
Input consists of 2 arguments, N=A and K=B in this order.
Output format:
Return a single integer , the expected value modulo 109+7.
Second Question:
Given a grid A of size N*M, 2 players are playing a game on it taking alternate turns.
In each turn, a player chooses a subset of elements from any row and replaces each one of them with their proper divisor.
A proper divisor of a number N is any divisor of N, not equal to N.
The player who is unable to move, loses. Determine the winner of the game.
Problem Constraints:
 1<=N, M<=103
 1<=A[i][j]<=106
Input format:
The only line of argument contains the grid A.
Output format:
Return a single integer, 1 or 2 , depending upon which player wins.
Third Question:
Given a tree of N nodes numbers 0 to N1. Each node have binary value i.e 0 or 1 denoted by integer array A.
The beauty of a ith node is 2i*A[i]. The total beauty of the Tree is sum of beauty of each node.
Aman is superstitious and will accept the tree only its total beauty is 2N 1 or 0.
He asked you to make the tree acceptable but you can only use the following operation.
 In each operation, select any node X and call flip(X).
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]

Find the minimum number of operation required to make the tree acceptable.
Problem Constraints:
 1<=N<=105
 0<=A[i] <=1
 0<=B[i][0], B[i][1]<=N1
Input format:
First argument is an integer array A of size N denoting the node value.
Second argument is a 2D array B of size (N1)*2 where ith edge is between B[i][0] and B[i][1] node
Output format:
Return an integer denoting the minimum number of operations required.