Categories: CodeChef's Solutions

Bytelandian gold coins Problem Solution with Approach – CodeChef

Problem Statement

In Byteland they have a very strange monetary system.

Each Bytelandian gold coin has an integer number written on it. A coin n can be exchanged in a bank into three coins: n/2, n/3 and n/4. But these numbers are all rounded down (the banks have to make a profit).

You can also sell Bytelandian coins for American dollars. The exchange rate is 1:1. But you can not buy Bytelandian coins.

You have one gold coin. What is the maximum amount of American dollars you can get for it?

Related Post

Input

The input will contain several test cases (not more than 10). Each test case is a single line with a number n, 0 <= n <= 1 000 000 000. It is the number written on your coin.


Output

For each test case output a single line, containing the maximum amount of American dollars you can make.


Example

Input:
12

Output:
13
2

You can change 12 into 6, 4 and 3, and then change these into 6+6+4+3=3=13. If you try changing the coin 2 into 3 smaller coins, you will get 1, 0 and 0, and later you can get no more than 1 coin so it is better to exchange 2 coins for 2 dollars.


Approach to Solution

This problem is a classic example of Recursive Programming. Here the main idea is to get the maximum sum of coins. For cases where N > number of coins in (N/2+N/3+N/3) we will simply get the change for the exact coin N.

# Dictionary to store the number of coins to their corresponding keys 
array = {0:0,1:1}

def solve(n):
    if n in array:
        return array[n] #retruns the value of the key if found in array
    else:
        array[n] = max(n,solve(n//2)+solve(n//3)+solve(n//4))
        return array[n] 

if __name__ == '__main__':
    # taking the input 
    i = 10
    while(i > 0):
        n = int(input())
        print(solve(n))
        i -= 1

Problem link – link

Aditya Kumar

View Comments

Share
Tags: CodeChef Python

Recent Posts

  • Programming

Mastering Print Formatting in Python: A Comprehensive Guide

In Python, the print() function is a fundamental tool for displaying output. While printing simple…

10 months ago
  • Programming

Global Variables in Python: Understanding Usage and Best Practices

Python is a versatile programming language known for its simplicity and flexibility. When working on…

10 months ago
  • Programming

Secure Your Documents: Encrypting PDF Files Using Python

PDF (Portable Document Format) files are commonly used for sharing documents due to their consistent…

10 months ago
  • Programming

Creating and Modifying PDF Files in Python: A Comprehensive Guide with Code Examples

PDF (Portable Document Format) files are widely used for document exchange due to their consistent…

10 months ago
  • Programming

Boosting Python Performance with Cython: Optimizing Prime Number Detection

Python is a high-level programming language known for its simplicity and ease of use. However,…

10 months ago
  • Programming

Using OOP, Iterator, Generator, and Closure in Python to implement common design patterns

Object-Oriented Programming (OOP), iterators, generators, and closures are powerful concepts in Python that can be…

10 months ago

This website uses cookies.