Festa de Aniversário
Solução escrita por Malu Azevedo
Conhecimentos necessários:
O problema nos pede para determinar quem comemora aniversário primeiro no ano, dadas as datas de aniversário de Alice ($$DA, MA$$) e de Bruno ($$DB, MB$$), imprimindo “$$A$$” se Alice festejar primeiro ou “$$B$$” se Bruno festejar primeiro.
Ideia Central
Para descobrir quem faz aniversário primeiro ao longo do ano, precisamos comparar as duas datas observando a hierarquia do calendário, em que o mês possui prioridade sobre o dia. Se o mês do aniversário de Alice () for diferente do mês de Bruno ($$MB$$), a pessoa com o menor mês comemora primeiro, pois um mês menor vem antes no ano. Caso os dois façam aniversário no mesmo mês ($$MA = MB$$), o desempate é feito pelo dia, significando que a pessoa com o menor dia ($$DA$$ ou $$DB$$) comemora primeiro.
Abordagem Completa
Lemos os quatro inteiros de entrada e aplicamos a lógica condicional direta: se $$MA \lt MB$$, Alice faz aniversário antes. Se $$MB \lt MA$$, Bruno faz aniversário antes. Caso os meses sejam iguais, comparamos os dias: se $$DA \lt DB$$, Alice vem primeiro. Caso contrário, Bruno vem primeiro. A complexidade é $$O(1)$$ por conta que são realizadas apenas comparações diretas entre valores numéricos.
Clique aqui para ver o código completo
Adivinha o Número
Solução Escrita por Márcio Vitor
Conhecimentos necessários:
Para resolver esse problema podemos calcular as variáveis $$distA, distB$$ distância de P à A e B respectivamente, depois verifique se $$distA \lt distB$$ então imprima $$A$$, se $$distA \gt distB$$ imprima $$B$$, caso haja empate imprima $$E$$.
Para calcular a distância de dois números $$X, Y$$, você pode usar a função $$abs$$ da biblioteca $$<cmath>$$, ou usar um if para verificar qual o maior e subtrair com o valor do menor.
As subtarefas tem outras formas de calcular $$distA$$, $$distB$$.
Subtarefa 2 ($$A \leq P \leq B$$) (20 pontos):
$$distA = P – A$$
$$distB = B – P$$
Subtarefa 3 ($$A \leq B$$) (20 pontos):
perceba que se $$P \lt A$$ então $$A$$ com certeza está mais perto, e analogamente para o caso $$P \gt B$$ que $$B$$ ganha, então resta o caso $$A \leq P \leq B$$ resolvido na subtarefa 2.
Clique aqui para ver o código completo.
Passes
Solução Escrita por Márcio Vitor
Conhecimentos necessários:
Subtarefa 2 ($$N = 3$$) (20 pontos):
Nessa subtarefa basta verificar se ocorreram passes entre o jogador $$1 e 2$$ e entre os jogadores $$2 e 3$$, mantendo também duas variáveis $$time1, time2$$ que guardam as quantidades de passes para cada time.
Como $$N$$ é bem pequeno é possível resolver usando várias condicionais, caso o aluno não saiba usar loops
Subtarefa 3 (todos os valores de $$J_i$$ são positivos) (20 pontos):
como a todo momento o time $$1$$ é necessário verificar apenas se há uma mudança de jogador entre dois tempos consecutivos. Para isso itere $$i$$ indo de $$2$$ a $$N$$ e verifique se $$J_i \neq J_{i-1}$$ então incremente a variável $$time1$$.
Sem restrições adicionais (100 pontos):
Vamos iterar da mesma forma que a subtarefa $$3$$ porém para para verificar se um passe ocorreu além da mudança de jogadores entre $$i$$ e $$i-1$$ é também necessário verificar se ambos são do mesmo time ou seja se $$J_i$$ e $$J_{i-1}$$ tem mesmo sinal.
nota: uma forma fácil de verificar se dois números $$X,Y$$ têm mesmo sinal é se $$X \cdot Y > 0$$(pelas regras de sinal da multiplicação), para mais detalhes consulte o código abaixo.
