Dedos
Solução escrita por Julia Tiosso
Conhecimentos necessários:
Seja $$N$$ o número indicado por Rafaela. Então, $$N = (16*D_1)+(8*D_2)+(4*D_3)+(2*D_4)+(1*D_5)$$. Assim, basta ler os valores de cada um dos dedos e imprimir o resultado $$N$$.
Em outras palavras, o enunciado dá a representação binária de um número $$(D_1D_2D_3D_4D_5)_2$$ e pede sua conversão para a base decimal.
Dança de Quadrilha
Solução escrita por Otávio Pinheiro
Conhecimentos necessários:
Perceba que a direção do movimento de Elena alterna após cada anúncio do marcador. Ou seja, o primeiro movimento é marcado no sentido horário, o segundo no anti-horário, e assim sucessivamente.
Como Elena percorre 1 metro por segundo, a distância percorrida em cada movimento é exatamente igual ao intervalo de tempo correspondente. Dessa forma, podemos representar os movimentos no sentido horário como valores positivos e os movimentos no sentido anti-horário como valores negativos.
O problema também pede para imprimir a resposta final como módulo, então devemos retornar .
O código para implementar isso consta manter um inteiro S e iterar de 0 à N, sendo que se o iterador estiver em uma posição par iremos incrementar em S e, caso contrário, estiver numa posição ímpar, vamos decrementar em S.
Finalmente retornamos usando a função . Como percorremos o vetor apenas uma vez, a complexidade de tempo da solução é
Clique aqui para ver o código completo
Transporte
Solução escrita por Julia Tiosso
Conhecimentos necessários:
O algoritmo que vamos realizar consiste em tentar agrupar o máximo de estudantes possível em um mesmo transporte. Assim, garantimos que usamos a quantidade mínima de ônibus.
Dessa maneira, vamos atribuir inicialmente o primeiro ônibus ao estudante de tempo $$t_1$$. Suponha que estamos atualmente preenchendo um ônibus que começa no estudante $$j$$ e queremos decidir se o estudante $$i$$ pode entrar nesse mesmo ônibus:
- Se $$t_i$$ $$-$$ $$t_j > K$$, então o estudante $$i$$ não pode embarcar nesse transporte, pois isso implicaria que $$j$$ esperaria mais de $$T$$ segundos. Então um novo ônibus que começa no estudante $$i$$ deve ser contratado.
- Senão, $$i$$ consegue entrar nesse transporte e seguimos tentando agrupar os próximos estudantes.
Resumo de Números
Solução escrita por Márcio Vitor
Conhecimentos necessários:
Um fato interessante é que é possível provar que o único número chato é o $$321$$, ou seja basta usar um $$while$$ loop enquanto o número atual $$N$$ for diferente de $$321$$ então aplique a operação de resumo no número iterando pelos dígitos e contando quantos são pares ($$P$$), ímpares ($$I$$) e a quantidade total ($$T$$) e troque $$N$$ por $$100*T + 10*I + P$$.
Para iterar pelos dígitos de um número use o fato que para um inteiro $$X$$, o dígito das unidades é $$x \pmod{10}$$ e podemos usar a divisão do c++ trocando $$x$$ por $$\lfloor \frac{x}{10} \rfloor$$ para remover o dígito mais à direita, para mais detalhes olhe o código abaixo.
Note que é possível iterar pelos dígitos usando o tipo string e convertendo cada caractere para o tipo inteiro
