Comentário Noic OBI 2020 – Fase 1 Turno B – Programação Nível Júnior

Comentário por Thiago Mota, Anita Ramos e Leonardo Paes

Para conferir a prova na íntegra, clique aqui.

Relógio de Atleta

Conhecimento prévio necessário:

Iremos utilizar condições if/else para resolver este problema. Basta seguir as condições descritas no problema. Segue o código comentado:

Divisão do Tesouro

Conhecimento prévio necessário:

Esse é um problema bem simples, que pode ser resolvido apenas com leitura, impressão e uma lógica. A lógica funcionará assim: contaremos o capitão como 2 outros marinheiros. Assim, dividiremos o total do tesouro $$A$$ por $$N+2$$ para descobrir quanto cada marinheiro ganhará e depois dobrar o valor para o capitão. Por exemplo, se pensarmos em $$A=10$$ e $$N=8$$, temos o seguinte:

  • Cada marinheiro deve receber $$1$$
  • O capitão deve receber $$2$$

Perceba que o capitão conta como dois outros marinheiros. Se dividirmos $$A$$ por $$8 + 2$$(capitão), teremos 1. Por fim, dobramos esse valor para o capitão, ficando com 1 para cada marinheiro e 2 para o capitão.

Na parte da programação então, depois de declarar as variáveis e ler toda a entrada, dividimos $$A$$ por $$N+2$$ e dobramos o valor (x2). Assim, o cálculo geral fica: $$2 \cdot (A/(N+2))$$

Complexidade: $$O(1)$$.

Segue o código comentado para melhor compreensão da solução:


#include<bits/stdc++.h> //biblioteca utilizada
using namespace std;
int main()
{
int A,N; //declaração de variáveis
scanf("%d", &A); //leitura do 'A'
scanf("%d", &N); //leitura do 'N'
printf("%d", 2*(A/(N+2))); //imprimi a resposta do cálculo de 2*(A/(N+2))
return 0; //retorna a 0
}

view raw

tesouro.cpp

hosted with ❤ by GitHub

Camisetas da Olimpíada

Conhecimento prévio necessário:

Para resolvermos esse problema, basta utilizarmos duas variáveis auxiliares $$qtdp$$ e $$qtdm$$ que guardam, respectivamente, a quantidade de camisetas pequenas e a quantidade de camisetas médias escolhidas pelos premiados. Então, basta checarmos se a quantidade de camisetas pequenas produzidas é maior ou igual a $$qtdp$$ e se a quantidade de camisetas médias produzidas é maior ou igual a $$qtdm$$. Se essa condição for verdadeira, todos os premiados serão atendidos com a camiseta do tamanho que escolheram, então imprimimos $$S$$, caso contrário, imprimimos $$N$$.

Código de exemplo: