/* * Solução do problema 'Pedágio' (OBI 2010 - Nível 1, Fase 1) * * Maurício de Lemos Rodrigues Collares Neto () */ #include int main() { int l, d, k, p; scanf("%d %d", &l, &d); scanf("%d %d", &k, &p); int resposta = 0; /* O primeiro custo que temos é um custo de k reais por quilômetro * percorrido. Como tempos l quilômetros, o custo total com a gasolina * é de k * l reais. * * Este valor pode ser, no máximo, 10^4 * 10^4, e portanto podemos usar * uma variável do tipo int. */ resposta += k * l; /* O outro custo é o custo dos pedágios. Precisamos então saber quantos * pedágios estão presentes numa pista de comprimento l que tem pedágios * espaçados de d quilômetros. Mas, vejamos um exemplo. Se l = 21 e d = 5, * a pista se parece com isso: * * ____P____P____P____P_ * 123451234512345123451 * * Note que podemos pensar que estamos dividindo a pista igualmente em pe- * daços de 5km e colocando um pedágio em cada parte dividida, ignorando * o resto. Então, o número de pedágios é uma simples divisão. No exemplo, * se dividirmos 21 por 5, obtemos 4,25, que significa que temos 4 pedágios * e um "pedaço de pista" (correspondente a 0,25 do comprimento normal da * pista de um pedágio), que deve ser ignorado segundo o problema. Como a * divisão inteira do C++ automaticamente ignora a parte fracionária de * um número, temos (l/d) pedaços, cada um custando p reais, e portanto * o custo total é de (l/d) * p reais. * * O valor acima também é, no máximo, 10^4 * 10^4, donde resposta é no * máximo 2 * 10^8 e portanto ainda pode ser representada por um int. */ resposta += (l/d) * p; printf("%d\n", resposta); }