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:
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 A e 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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bondinho - F1PJ - OBI 2017 | |
// Rogério Júnior | |
// Complexidade: O(1) | |
#include <cstdio> // scanf e printf | |
int main(){ | |
// declaro e leio os valores de A e M | |
int a, m; | |
scanf("%d %d", &a, &m); | |
// se a soma de A e M não suerar 50 | |
if(a+m<=50){ | |
printf("S\n"); // imprimo o caractere 'S' | |
} | |
// caso o contrário ocorra | |
else{ | |
printf("N\n"); // imprimo o caractere 'N' | |
} | |
return 0; | |
} |
Drone de Entrega
Conhecimento prévio necessário:
Para descobrir se um cubo de dimensões A, B e C consegue passar por uma janela de dimensões H e 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 A for a altura e B a largura, basta checarmos se esses comprimentos não ultrapassam essas dimensões da janela, ou seja, se A<=H e B<=L. Entretanto, podemos girar o cubo em 90 graus, e então B se torna a altura e A a largura, então devemos checar se A<=L e B<=H. Deste modo, para cada um dos 3 tipos de faces que podemos escolher, temos 2 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 e 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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Drone de Entrega - F1PJ - OBI 2017 | |
// Rogério Júnior | |
// Complexidade: O(1) | |
#include <cstdio> // scanf e printf | |
int main(){ | |
// declaro e leio os valores de A, B, C, H e L | |
int a, b, c, h, l; | |
scanf("%d %d %d %d %d", &a, &b, &c, &h, &l); | |
// se alguma das maneiras de passar o cubo funcionar | |
if((a<=h and b<=l) or (a<=l and b<=h) or (a<=h and c<=l) or (a<=l and c<=h) or (b<=h and c<=l) or (b<=l and c<=h)){ | |
printf("S\n"); // imprimimos o caractere 'S' | |
} | |
// caso nenhuma funcione | |
else{ | |
printf("N\n"); // imprimimos o caractere 'N' | |
} | |
return 0; | |
} |