17蓝桥杯竞赛题“购物单”

Posted ZaleJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17蓝桥杯竞赛题“购物单”相关的知识,希望对你有一定的参考价值。

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
你的任务是计算出,小明最少需要取多少现金。


以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折


需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
特别地,半价是按50%计算。

请提交小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。

特别提醒:不许携带计算器入场,也不能打开手机。

程序如下

 

public class Java17_1 {
    public static double CouDis(double dis) {
        if(dis>9)   return dis/100;
        return dis/10;
    }
    
    public static void  main(String[] args) {
        String str = 
                "****     180.90       88Z" + 
                "****      10.25       65Z" + 
                "****      56.14        9Z" + 
                "****     104.65        9Z" + 
                "****     100.30       88Z" + 
                "****     297.15        5Z" + 
                "****      26.75       65Z" + 
                "****     130.62        5Z" + 
                "****     240.28       58Z" + 
                "****     270.62        8Z" + 
                "****     115.87       88Z" + 
                "****     247.34       95Z" + 
                "****      73.21        9Z" + 
                "****     101.00        5Z" + 
                "****      79.54        5Z" + 
                "****     278.44        7Z" + 
                "****     199.26        5Z" + 
                "****      12.97        9Z" + 
                "****     166.30       78Z" + 
                "****     125.50       58Z" + 
                "****      84.98        9Z" + 
                "****     113.35       68Z" + 
                "****     166.57        5Z" + 
                "****      42.56        9Z" + 
                "****      81.90       95Z" + 
                "****     131.78        8Z" + 
                "****     255.89       78Z" + 
                "****     109.17        9Z" + 
                "****     146.69       68Z" + 
                "****     139.33       65Z" + 
                "****     141.16       78Z" + 
                "****     154.74        8Z" + 
                "****      59.42        8Z" + 
                "****      85.44       68Z" + 
                "****     293.70       88Z" + 
                "****     261.79       65Z" + 
                "****      11.30       88Z" + 
                "****     268.27       58Z" + 
                "****     128.29       88Z" + 
                "****     251.03        8Z" + 
                "****     208.39       75Z" + 
                "****     128.88       75Z" + 
                "****      62.06        9Z" + 
                "****     225.87       75Z" + 
                "****      12.89       75Z" + 
                "****      34.28       75Z" + 
                "****      62.16       58Z" + 
                "****     129.12        5Z" + 
                "****     218.37        5Z" + 
                "****     289.69        8Z      ";
        int lineNum = 0;    //统计有多少个商品
        
        for(int i = 0; i < str.length(); i++) {
            if(str.charAt(i)==‘*‘)  lineNum++;
        }
        lineNum/=4;
        double prices[] = new double[lineNum];
        double discount[] = new double[lineNum];
        
        String newStrP=new String();
        String newStrD=new String();
        
        
        
        
        int prn=0;
        int din=0;
        
        for(int i = 0; i < str.length(); i++) {
            if((str.charAt(i) >= ‘0‘ && str.charAt(i) <= ‘9‘) || str.charAt(i)==‘.‘) {
                if (str.charAt(i+1)==‘Z‘ || str.charAt(i+2)==‘Z‘) {
                    if (!newStrP.equals("")) {
                        //System.out.println(Double.valueOf(newStrP));
                        prices[prn] = Double.valueOf(newStrP);
                        prn++;
                    }
                    
                    newStrP=new String();
                    
                    continue;
                }
                newStrP+=str.charAt(i);
            }
        }
        
        for(int i = 0; i < str.length(); i++) {
            if((str.charAt(i) >= ‘0‘ && str.charAt(i) <= ‘9‘)) {
                if (!(str.charAt(i+1)==‘Z‘ || str.charAt(i+2)==‘Z‘)) {
                    if (!newStrD.equals("")) {
                        //System.out.println(Double.valueOf(newStrP));
                        discount[din] = Double.valueOf(newStrD);
                        din++;
                    }
                    
                    newStrD=new String();
                    
                    continue;
                }
                newStrD+=str.charAt(i);
            }
        }
        
        prn = 0;
        din = 0;
        
        
        
//      
//      for(double e:prices) {
//          System.out.println(e);
//      }
//      for(double e:discount) {
//          System.out.println(e);
//      }
//      
//      
        for(;prn<prices.length;prn++) {
            prices[prn] *=CouDis(discount[prn]);
        }
        
        double result=0;
        for(double e:prices) {
            result+=e;
        }
        
        System.out.print(result);
        
        
        
    }
}

 

以上是关于17蓝桥杯竞赛题“购物单”的主要内容,如果未能解决你的问题,请参考以下文章

17蓝桥杯竞赛题“取数位”

2017第八届蓝桥杯C/C++ B组省赛个人代码

第八届蓝桥杯省赛B组 做题记录(python)

第八届蓝桥杯省赛B组 做题记录(python)

第八届蓝桥杯省赛B组 做题记录(python)

蓝桥杯嵌入式——第十届蓝桥杯嵌入式国赛