#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
#include <string>
#include <sstream>
#include <stack>
#include <iomanip>
#include <numeric>
#include <queue>
#include <climits>
#include <set>
#include <complex>
#include <cmath>
#include <cstring>
#include <map>
using namespace std;
using ll = long long;
#define MOD 1000000007
#define INF 1LL << 59
using ld = long double;

bool operator<(const pair<int, int> &a, const pair<int, int> &b)
{
    if (a.first == b.first)
    {
        return b.second > a.second;
    }
    return a.first < b.first;
}

int arr[200010];
int a[200010], b[200010];

int GCD(int a, int b)
{
    if (a < b)
        swap(a, b);
    if (b == 0)
        return a;
    return GCD(b, a % b);
}

int dp[55][30][30][30];

int rec(int sum, int cost, int a, int b, int c)
{
    if (sum == 0)
    {
        return cost;
    }
    if (sum < 0)
    {
        return INT_MAX;
    }
    if (dp[sum][a][b][c] != INT_MAX)
        return dp[sum][a][b][c];

    int res = INT_MAX;

    if ((a + 1) % 5 == 0)
    {
        res = min(res, rec(sum - 2, cost - 380 * 4 + 380 * 5 * 0.80, a + 1, b, c));
    }
    else
    {
        res = min(res, rec(sum - 2, cost + 380, a + 1, b, c));
    }

    if ((b + 1) % 4 == 0)
    {
        res = min(res, rec(sum - 3, cost - 550 * 3 + 550 * 4 * 0.85, a, b + 1, c));
    }
    else
    {
        res = min(res, rec(sum - 3, cost + 550, a, b + 1, c));
    }

    if ((c + 1) % 3 == 0)
    {
        res = min(res, rec(sum - 5, cost - 850 * 2 + 850 * 3 * 0.88, a, b, c + 1));
    }
    else
    {
        res = min(res, rec(sum - 5, cost + 850, a, b, c + 1));
    }

    return dp[sum][a][b][c] = min(dp[sum][a][b][c], res);
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    //cout << fixed << setprecision(5);

    int n;
    while (cin >> n)
    {
        if (n == 0)
        {
            break;
        }

        for (int i = 0; i < 55; ++i)
        {
            for (int j = 0; j < 30; ++j)
            {
                for (int k = 0; k < 30; ++k)
                {
                    for (int l = 0; l < 30; ++l)
                    {
                        dp[i][j][k][l] = INT_MAX;
                    }
                }
            }
        }
        n /= 100;
        cout << rec(n, 0, 0, 0, 0) << endl;
    }
    return 0;
}
