Se você quiser se preparar para a OBI, não deixe de conferir o Roteiro de estudos de informática, e também a página de informática do NOIC, com todos nossos materiais.
Ogro
Escrito por Caique Paiva
Conhecimentos Prévios Necessários:
Vamos fazer o que o problema pediu, Crie um if que vê:
- Caso , imprima .
- Caso contrário, imprima
Relógio
Escrito por Caique Paiva
Conhecimentos Prévios Necessários:
Primeiro, adicione todos os segundos em , e então, enquanto , ou seja, não caber no relógio, tire segundos de e adicione minuto em . Feito isso, agora pode acontecer de , então faça o mesmo raciocínio, enquanto tire minutos de e adicione hora em . Terminando, pode acontecer de , então, basta pegar o resto de por 24.
Concurso
Escrito por João Pedro Castro
Conhecimentos Prévios Necessários:
Quem fez essa questão foi muito generoso, pois existe várias maneiras de resolver ela. A mais comum eu imagino que tenha sido ordenar o vetor de maneira decrescente (maior para o menor), e imprimir a K-ésima posição. Essa é opção mais rápida, e acredito que a maioria tenha resolvido assim (incluindo eu). Mas, eu preferi tratar uma solução alternativa que não usa sort, e ela é bem legal também!
Perceba que para uma nota fixa é fácil checar se ela é uma nota válida ou não (possui no mínimo candidatos com a nota maior ou igual à ela). A complexidade disso, sem nenhuma otimização com outras técnicas, é . Só que perceba também que pelas restrições do enunciado, ou seja a resposta com certeza é uma dentre 100. Por tanto, tem como você só assumir que a resposta é , começando com , e toda vez que der errado você diminui em 1; e quando der certo você pode encerrar o loop e imprimir . E em no máximo 100 repetições você consegue uma resposta! Logo a complexidade final seria ou que são iguais no pior caso.
Jogo da vida
Escrito por Caique Paiva
Conhecimentos Prévios Necessários:
Vamos criar duas matrizes, uma chamada que vai ser a original, e outra chamada , que vai ser a matriz depois de feito uma rodada do jogo. Vamos fazer a seguinte interação vezes:
- Para cada casinha, veja quem são os vizinhos dele, conte quanto estão vivos e quanto estão mortos, e então, cheque com um if else cada uma das condições. Suponha que estamos vendo a casinha :
- Se
- Se ele tem casas vizinhas vivas, então faça .
- Caso contrário, faça
- Caso contrário:
- Se ele tem ou vizinhas vivas, faça .
- Caso contrário, faça .
- Se
- Feito isso, faça , atualizando a matriz depois de uma rodada, e volte para o começo da interação