Edição 36: Treinamento em TI - problemas e desafios atuais das principais empresas

Lançou para você uma nova seleção de tarefas a partir de entrevistas. Verifique suas soluções para problemas do artigo anterior - aqui.



Teaser: na próxima edição, tentaremos um novo formato. Fizemos uma parceria para isso com uma empresa - o maior varejista conhecido por seu departamento de TI (suposições são aceitas nos comentários). Fique atento, como eles dizem. A coluna é suportada pela agência de recrutamento Spice IT .

Lembro que o resumo de nosso artigo é o seguinte: publicamos duas perguntas que não exigem a criação de código para aquecimento. Em seguida, publicamos três tarefas que envolvem escrever código em um dos idiomas convenientes para você, a menos que especificado de outra forma em uma tarefa específica.
Além disso, todas as perguntas e tarefas ocorrem em ordem crescente de complexidade.
Então vamos começar.

Questões


1. Encontre linhas ausentes no Excel
Nos é fornecida uma planilha do Excel que contém números inteiros de 1 a 50, incluindo ambos. No entanto, os números estão em uma forma confusa e há um número inteiro ausente. Você precisa escrever um código para identificar o número inteiro ausente. Somente a lógica é necessária.

Transferir
excel, 1 50 . , , . , .

2. Tic Tac Toe Puzzle
O jogo Tic-Tac-Toe está sendo jogado entre dois jogadores e fica abaixo do estado após seis jogadas.

Você pode responder às seguintes perguntas?
  • Quem ganhará o jogo, O ou X?
  • Qual foi a sexta marca e em que posição?

Suponha que ambos os jogadores sejam inteligentes o suficiente.

Transferir
- , ( ) .
?
  • , ?
  • 6- ?

, .

Tarefas


1. Encontre o vencedor do jogo de Nim
In Game of Nim, two players take turns removing objects from heaps or the pile of stones.
Suppose two players A and B are playing the game. Each is allowed to take only one stone from the pile. The player who picks the last stone of the pile will win the game. Given N the number of stones in the pile, the task is to find the winner, if player A starts the game.

Input:
The input line contains T, denoting the number of test cases. Then T test case follows, a single line of the input containing a positive integer N.

Output:
Print the winner i.e. Player A or Player B for each testcase in a separate line.

Constraints:
1 <= T <= 100
1 <= N <= 1000


Example:
Input:

2
3
15


Saída: Explicação: Caixa de Teste 1: Jogador A remove a pedra 1 que está no topo, depois o Jogador B remove a pedra 2 e, finalmente, o jogador A remove a última pedra.
Player A
Player A





Transferir
Nim .
, . . , , . N , , , .

:
T, . N .

:
, B, .

:
1 < = T < = 100
1 < = N < = 1000


:
:

2
3
15


:



:
1: 1, , 2,
, , — .

2. Reversão de fila
Given a Queue Q containing N elements. The task is to reverse the Queue. Your task is to complete the function rev(), that reverses the N elements of the queue.

Input:
The first line of input contains an integer T denoting the Test cases. Then T test cases follow. The first line contains N which is the number of elements which will be reversed. Second line contains N space seperated elements.

Output:
For each testcase, in a new line, print the reversed queue.

Your Task:
This is a function problem. You only need to complete the function revque pega uma fila como parâmetro e retorna a fila invertida . A impressão é feita automaticamente pelo código do driver .

Restrições: Exemplo: Entrada: Explicação: Caixa de Teste 1: Após a reversão dos elementos fornecidos da fila, a fila resultante será 6 2 10 1 3 4. Caixa de Teste 2: Após a reversão dos elementos fornecidos da fila, a fila resultante será 1 2 3 4.
1 ≤ T ≤ 100
1 ≤ N ≤ 105
1 ≤ elements of Queue ≤ 105




2
6
4 3 1 10 2 6
4
4 3 2 1
Output :

6 2 10 1 3 4
1 2 3 4





Transferir
Q, N . , . — rev(), N .

:
T, . T . N — , . N .

:
.

:
. rev, . .

:
1 ≤ T ≤ 100
1 ≤ N ≤ 105
1 ≤ ≤ 105


:
:

2
6
4 3 1 10 2 6
4
4 3 2 1

:
6 2 10 1 3 4
1 2 3 4


:
1: 6 2 10 1 3 4.
2: 1 2 3 4.

3. Operações no PriorityQueue
Given N integers, your task is to add these elements to the PriorityQueue. Also, given M integers, the task is to check if element is present in PriorityQueue. If present, print 1 and return the max element of priority queue, and then delete the max element. If not present, print -1.

Input Format:
First line of testcas contains number of testcases T. For each testcase, there will be 4 lines. First line contains N, number of elements to be inserted into the Priority Queue. Second line contains N positive integers separated by space. Third line contains M, fourth line contains M positive integers.

Output Format:
For each testcase, print «1» and max element in newlines if element to be found is present in the PriorityQueue, else print "-1".

Your Task:
Your task is to complete the functions insert(), find(), and delete(), such that it adds, find and delete the elements from the queue respectively.

Constraints:
1 <= T <= 100
1 <= N <= 103
1 <= M <= 103


Example:
Input:

1
8
1 2 3 4 5 2 3 1
5
1 3 2 9 10


Output:
1
5
1
4
1
3
-1
-1


Explanation:
Testcase 1: After inserting given elements, when we find 1, which is present, so we print 1, and then we print the top element of the PriorityQueue which is 5, and delete it. Similarly, when element is not present, just print "-1".

N , , PriorityQueue. , M , , , PriorityQueue. , 1 , . , -1.

:
. 4 . N — , . N , . MPriorityQueue, M .

:
«1» , PriorityQueue, "-1".

:
, insert(), find() delete() , , .

:
1 < = T < = 100
1 < = N < = 103
1 <= M < = 103


:
:

1
8
1 2 3 4 5 2 3 1
5
1 3 2 9 10


:
1
5
1
4
1
3
-1
-1


:
1: , PriorityQueue = 1 2 3 4 5 2 3 1. 1 3 2 9 10. «1» PriorityQueue, «1» PriorityQueue «5» . , , "-1".


1
, 1 n (n*(n+1)/2)
1 50
50*(50+1)/2 (, n = 50)
= 50*(51)/2
= 25*51
= 1275.

, , , , 1275. 1275 .

2
O . 9.
:
7- 5, X, O. , 6- , . – 6- 7, 9.

, , 6- 7. 5 .

, X, 9. . , .

1
printf("%s\n",(n % 2) ? "Player A" : "Player B");

2
{
    // add code here.
    stack<long long int> st;
    while(!q.empty())
    {
        int a=q.front();
        st.push(a);
        q.pop();
    }
    while(!st.empty())
    {
        q.push(st.top());
        st.pop();
    }
    return q;
}

3
static void insert(PriorityQueue<integer> q, int k){
q.add(k);
}

static boolean find(PriorityQueue<integer> q, int k){
return q.contains(k);
}

static int delete(PriorityQueue<integer> q){
int removed = q.remove();
return removed;
}

All Articles