Sistema monetário de Byteland
tags [Desafio de Lógica, Code Competion]
Data criação 2010-03-17 03:05:48 UTC
Na internet existem diversos desafios de lógica, eu sempre senti uma certa atração por eles, mas a minha capacidade matemática é meio reduzida devido ao nosso excelente programa de educação brasileiro. Mesmo assim eu me esforço às vezes, o problema abaixo é de complexidade média, e eu coloquei aqui, por que sempre que possível irei resolver esses caras e deixar aqui como um tipo de troféu.
Você pode vender suas moedas por doláres, a troca é sempre feita na proporção 1:1, mas não pode comprar moedas de Byteland.
Você possui uma moeda. Qual é o máximo de doláres que poderia comprar com ela ?
A lógica deve servir para 0 <= n <= 1 000 000 000. Onde n é o número escrito na moeda
Para cada entrada deve haver uma única saída com a quantidade de doláres obtidos.
Exemplo
Entrada: 12 moedas / Saída: 13 doláres
Entrada: 2 moedas / Saída: 2 doláres
Você pode trocar 12 em 6, 4 e 3, e então trocá-las por doláres $6+$4+$3 = $13.
Se você trocar a moeda 2 em 3 menores, você irá obter 1, 0 e 0, a depois irá comprar apenas um dolar. (prejuízo na certa)
Então é melhor realizar a troca direta 2 moedase em 2 doláres.
Solução em Java:
Na ilha de "Byteland" eles tem um sistema monetátio muito estranho.
Cada moeda de ouro possui um número escrito nela.Uma moeda só pode ser trocada no banco em outras três moedas n/2, n/3 e n/4. Mas estes números são arrendodados para baixo (o banco precisa fazer uma grana)Você pode vender suas moedas por doláres, a troca é sempre feita na proporção 1:1, mas não pode comprar moedas de Byteland.
Você possui uma moeda. Qual é o máximo de doláres que poderia comprar com ela ?
A lógica deve servir para 0 <= n <= 1 000 000 000. Onde n é o número escrito na moeda
Para cada entrada deve haver uma única saída com a quantidade de doláres obtidos.
Exemplo
Entrada: 12 moedas / Saída: 13 doláres
Entrada: 2 moedas / Saída: 2 doláres
Você pode trocar 12 em 6, 4 e 3, e então trocá-las por doláres $6+$4+$3 = $13.
Se você trocar a moeda 2 em 3 menores, você irá obter 1, 0 e 0, a depois irá comprar apenas um dolar. (prejuízo na certa)
Então é melhor realizar a troca direta 2 moedase em 2 doláres.
Solução em Java:
fonte:Code Chef
fonte:Code Chef