#define _USE_MATH_DEFINES
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <limits>
#include <map>
#include <string>
#include <cstring>
#include <set>

using namespace std;

typedef long long ll;
typedef pair<int,int> P;

int buy_A(int n){
	return 380*(n-n%5) * 0.8 + 380 * (n%5);
}

int buy_B(int n){
	return 550*(n-n%4) * 0.85 + 550 * (n%4);
}

int buy_C(int n){
	return 850*(n-n%3) * 0.88 + 850 * (n%3);
}

int main(){

	int**** dp = new int***[25+1];
	for(int i=0;i<=25;i++){
		dp[i] = new int**[17+1];
		for(int j=0;j<=17;j++){
			dp[i][j] = new int*[10+1];
			for(int k=0;k<=10;k++){
				dp[i][j][k] = new int[50+1];
			}
		}
	}

	for(int i=0;i<=25;i++){
		for(int j=0;j<=17;j++){
			for(int k=0;k<=10;k++){
				for(int l=0;l<=50;l++){
					dp[i][j][k][l] = 10000000;
				}
			}
		}
	}

	dp[0][0][0][0] = 0;

	for(int a=0; a<=25;a++){
		for(int b=0; b<=17;b++){
			for(int c=0; c<=10;c++){
				for(int w=0; w<=50; w++){
					if(w - a*2 >= 0){
						dp[a][b][c][w] = min(dp[a][b][c][w],dp[0][b][c][w-a*2]+buy_A(a));
					}
					if(w - b*3 >= 0){
						dp[a][b][c][w] = min(dp[a][b][c][w],dp[a][0][c][w-b*3]+buy_B(b));
					}
					if(w - c*5 >= 0){
						dp[a][b][c][w] = min(dp[a][b][c][w],dp[a][b][0][w-c*5]+buy_C(c));
					}
				}
			}
		}
	}

	int W;
	while(~scanf("%d",&W)){
		if(W==0) break;
		W/=100;
		int res=10000000;
		for(int i=0;i<=25;i++){
			for(int j=0;j<=17;j++){
				for(int k=0;k<=10;k++){
					res=min(res,dp[i][j][k][W]);
				}
			}
		}
		cout << res << endl;
	}


}