Comentário Noic OBI 2020 – Fase 1 Turno B – Divisão do Tesouro

por

Comentário por Anita Ramos

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