■0106 Discounts of Buckwheat
入力の範囲が狭い(46通り)ので,全入力に対する解を予め全探索で求めておく.
- import java.util.*;
- import java.lang.*;
- import java.math.*;
- import java.io.*;
- import static java.lang.Math.*;
- import static java.util.Arrays.*;
- public class Main{
- Scanner sc=new Scanner(System.in);
- int INF=1<<28;
- double EPS=1e-9;
- void run(){
- int[] a=new int[51];
- Arrays.fill(a, INF);
- for(int k=0; toGramme(0, 0, k)<=50; k++){
- for(int j=0; toGramme(0, j, k)<=50; j++){
- for(int i=0; toGramme(i, j, k)<=50; i++){
- int g=toGramme(i, j, k);
- a[g]=Math.min(a[g], toMoney(i, j, k));
- }
- }
- }
- for(;;){
- int g=sc.nextInt()/100;
- if(g==0){
- break;
- }
- println(a[g]+"");
- }
- }
- int toGramme(int i, int j, int k){
- return i*2+j*3+k*5;
- }
- int toMoney(int i, int j, int k){
- int sum=0;
- sum+=380*(i-i%5)*80/100+380*(i%5);
- sum+=550*(j-j%4)*85/100+550*(j%4);
- sum+=850*(k-k%3)*88/100+850*(k%3);
- return sum;
- }
- void debug(Object... os){
- System.err.println(Arrays.deepToString(os));
- }
- void print(String s){
- System.out.print(s);
- }
- void println(String s){
- System.out.println(s);
- }
- public static void main(String[] args){
- // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));
- new Main().run();
- }
- }
0 件のコメント:
コメントを投稿