设计思路:
不论买多少本,都是除十,因为在余数之外肯定都是五本五本买最划算。(为什么不除5,因为假如是18本,除五得三余三但是买八本四本四本买比五本和三本买更便宜)余数按照没种情况列举出来,分别计算,最便宜的方法是一定的。最后根据以上方案输出买的方式还有总钱数。
源代码:
1 package test; 2 3 import java.util.Scanner; 4 5 public class B 6 { 7 static void qianshu(int x,int y)//计算钱数还有方案的函数 8 { 9 float number_zqs = 0,number_yzq = 0;//总钱数还有余出来的书的总钱数 10 switch(y) 11 { 12 case 0:number_yzq=0;break; 13 case 1:number_yzq=8;break; 14 case 2:number_yzq=(float) (16*0.95);break; 15 case 3:number_yzq=(float) (24*0.90);break; 16 case 4:number_yzq=(float) (32*0.80);break; 17 case 5:number_yzq=(float) (40*0.75);break; 18 case 6:number_yzq=38;break; 19 case 7:number_yzq=(float) 44.4;break; 20 case 8:number_yzq=(float) 51.2;break; 21 case 9:number_yzq=(float) 55.6;break; 22 } 23 number_zqs=(float) (x*60 + number_yzq); 24 System.out.println("一共要花"+number_zqs+"元!"); 25 if(y!=8)//只有8本的情况比较特殊,所以输出语句不同 26 { 27 System.out.println("一共要买" + (2*x+1) + "套! 以及" + y%5 + "本不同的"); 28 } 29 else 30 { 31 System.out.println("一共要买" + (2*x+1) + "套! 以及两套中本不同的两个4本"); 32 } 33 } 34 35 public static void main(String arg[]) 36 { 37 int number_zongshu=0,number_yushu=0,number_taoshu;//图书总数,除十的余数,还有一共有多少套 38 System.out.println("请输入要购买的书数量:"); 39 40 Scanner in=new Scanner(System.in); 41 number_zongshu=in.nextInt(); 42 in.close(); 43 44 number_yushu=number_zongshu%10; 45 46 number_taoshu=number_zongshu/10; 47 48 qianshu(number_taoshu,number_yushu); 49 } 50 51 }
结果截图:
18本那么就是两个五本再加两个四本30+30+32*0.8*2=111.2
23本就是四个五本一个三本,30*4+24*0.9=141.6
总结:
关键思想就是数量多了大头肯定是按照5本5本的买,关键是余数的处理。