■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 件のコメント:
コメントを投稿