Arroz

Solução escrita por Malu Azevedo

O problema nos pede para calcular o menor custo possível para obter pelo menos NN quilos de arroz, tendo à disposição pacotes de 1 kg (ao preço de AA) e pacotes de 5 kg (ao preço de BB).

Ideia Central

Para encontrar o menor custo, precisamos comparar a eficiência de preço entre os dois tipos de pacotes. Os pacotes de 5 kg são mais vantajosos quando o seu custo por quilo é menor do que o do pacote de 1 kg, o que ocorre se B<5×AB < 5 \times A. Caso contrário, se os pacotes de 1 kg forem mais baratos ou equivalentes por quilo (5×A≤B5 \times A \le B), a melhor estratégia é comprar exclusivamente pacotes de 1 kg.

Quando os pacotes de 5 kg compensam, o número de pacotes necessários pode ser obtido de duas formas eficientes: comprando a quantidade de pacotes de 5 kg arredondada para cima (⌈N/5⌉\lceil N / 5 \rceil) para garantir a quantidade mínima, ou comprando o maior número inteiro de pacotes de 5 kg abaixo de NN (⌊N/5⌋\lfloor N / 5 \rfloor) e completando o restante exato (Nmod5N \bmod 5) com pacotes de 1 kg.

Abordagem Completa

Lemos os valores de NN, AA e BB e aplicamos a lógica condicional direta. Se 5×A≤B5 \times A \le B, a resposta direta é N×AN \times A, pois comprar apenas pacotes de 1 kg é mais econômico ou igual. Por outro lado, se B<5×AB < 5 \times A, os pacotes de 5 kg são mais baratos por quilo, e calculamos o valor mínimo entre duas opções: comprar ⌈N/5⌉×B\lceil N / 5 \rceil \times B (arredondando para cima a divisão de NN por 5) ou comprar ⌊N/5⌋×B+(Nmod5)×A\lfloor N / 5 \rfloor \times B + (N \bmod 5) \times A (usando pacotes de 5 kg e preenchendo o resto com pacotes de 1 kg). Como NN pode atingir valores de até 101010^{10}, é necessário utilizar tipos de dados de 64 bits para evitar estouro de capacidade (overflow). A complexidade da solução é O(1)O(1), pois envolve apenas operações aritméticas diretas.

Clique aqui para ver o código completo.