Comentário NOIC OBI 2017 – Fase 1 – Programação Nível Júnior

Comentário por Rogério Júnior

Para ver o caderno de tarefas da primeira fase da Programação Nível Júnior da OBI 2017, clique aqui.

Bondinho

Conhecimento prévio necessário:

  1. Entrada e saída (Aula 1)
  2. Estruturas condicionais (Aula 2)

O problema tem um enunciado extremamente simples: a entrada nos fornece a quantidade de alunos A e a de monitores M, e nos pergunta se a soma delas não ultrapassa 50. Ou seja, basta lermos os valores de M e usarmos um if para checarmos se a soma A+M é menor ou igual a 50. Se ela for, imprimimos o caractere ‘S’, caso contrário, imprimimos o caractere ‘N’. Segue o código para melhor entendimento:

https://gist.github.com/rogerioagjr/b515da6e17686cf61af803e2954d768a

Drone de Entrega

Conhecimento prévio necessário:

  1. Entrada e saída (Aula 1)
  2. Estruturas condicionais (Aula 2)

Para descobrir se um cubo de dimensões A, BC consegue passar por uma janela de dimensões L, basta testarmos todas as maneiras possíveis de se tentar isso. Primeiramente, devemos escolher qual a face do cubo que terá os lados paralelos aos da janela, pois são esses os que precisam caber nela, enquanto o outro, a profundidade do cubo, não interfere na capacidade de o cubo passar. Temos três maneiras de escolher isso: ou usamos uma face de dimensão AxB, ou uma de dimensão BxC, ou uma de dimensão AxC. Olhando agora para a face AxB, por exemplo, temos duas maneiras de tentar fazer o cubo passar. Se for a altura e a largura, basta checarmos se esses comprimentos não ultrapassam essas dimensões da janela, ou seja, se A<=H B<=L. Entretanto, podemos girar o cubo em 90 graus, e então se torna a altura e a largura, então devemos checar se A<=L B<=H. Deste modo, para cada um dos 3 tipos de faces que podemos escolher, temos possibilidades (em pé ou deitado), o que gera 6 maneiras, no total, de tentarmos fazer o cubo passar. Basta testarmos cada uma delas com um if e, se pelo menos uma funcionar, o cubo passa. Basta usarmos os operadores and or e parênteses para deixar claro ao computador qual a ordem de precedência das operações lógicas que ele deve realizar. Segue o código para melhor entendimento:

https://gist.github.com/rogerioagjr/fdf63bebb590c1faf0a0a9835c18fcf0