1170 - Blobs
Mais um dia, mais um problema Ad-Hoc... Não, pera...
Descrição
Solução
Alternativa 1 - Cálculo direto
Saber quantas vezes precisamos dividir um número até que o resultado seja 1 ou menos é basicamente calcular o teto do logaritmo deste número.
#include <stdio.h>
#include <math.h>
int main()
{
double C;
int N, resposta;
scanf("%d", &N);
for (int i = 0; i < N; ++i)
{
scanf("%lf", &C);
printf("%d dias\n", (int)ceil(log2(C)));
}
return 0;
}
Alternativa 2 - Simulação do processo
Tudo o que você precisa é simular cada dia e quantos suprimentos Blobs terá ao final do dia. Se a quantidade de suprimento for menor ou igual a 1, pode parar o processo e imprimir a resposta.
#include <stdio.h>
int main()
{
double C;
int N, resposta;
scanf("%d", &N);
for (int i = 0; i < N; ++i)
{
scanf("%lf", &C);
resposta = 0;
while (C > 1.0)
{
++resposta;
C /= 2;
}
printf("%d dias\n", resposta);
}
return 0;
}
Last updated
Was this helpful?